目錄
交叉編譯器
編輯交叉編譯器是編譯器能夠生成的可執行用于代碼平臺比在其上運行編譯器的一個其它。例如,在PC上運行但生成在Android智能手機上運行的代碼的編譯器就是交叉編譯器。
從一個開發主機為多個平臺編譯代碼需要交叉編譯器。在目標平臺上直接編譯可能是不可行的,例如在計算資源有限的嵌入式系統上。
交叉編譯器不同于源代碼到源代碼的編譯器。交叉編譯器用于跨平臺軟件生成機器代碼,而源代碼到源代碼編譯器將文本代碼中的一種編程語言轉換為另一種編程語言。兩者都是編程工具。
交叉編譯器的使用
編輯交叉編譯器的基本用途是將構建環境與目標環境分開。這在幾種情況下很有用:
- 設備資源極其有限的嵌入式計算機。例如,微波爐將有一個非常小的計算機來讀取它的鍵盤和門傳感器,向數字顯示器和揚聲器提供輸出,并控制烹飪食物的機器。這臺計算機通常不夠強大,無法運行編譯器、文件系統或開發環境。
- 多臺機器編譯。例如,公司可能希望支持多個不同版本的操作系統或支持多個不同的操作系統。通過使用交叉編譯器,可以設置單個構建環境來為這些目標中的每一個進行編譯。
- 在服務器場上編譯。與為多臺機器編譯類似,一個涉及許多編譯操作的復雜構建可以在任何免費機器上執行,無論其底層硬件或運行的操作系統版本如何。
- 引導到新平臺。在為新平臺或未來平臺的模擬器開發軟件時,人們使用交叉編譯器來編譯必要的工具,例如操作系統和本地編譯器。
- 由使用在當前平臺上運行的交叉編譯器(例如在WindowsXP下運行的AztecC的MS-DOS6502交叉編譯器)的愛好者為現在已經過時的舊平臺(例如Commodore64或AppleII)編譯模擬器的本機代碼。
使用虛擬機(例如Java的JVM)解決了開發交叉編譯器的一些原因。虛擬機范例允許跨多個目標系統使用相同的編譯器輸出,盡管這并不總是理想的,因為虛擬機通常較慢,并且編譯的程序只能在具有該虛擬機的計算機上運行。
通常硬件架構不同(例如,在x86計算機上編譯面向MIPS架構的程序),但只有操作系統環境不同時,交叉編譯也適用,例如在Linux下編譯FreeBSD程序,甚至只是系統庫,就像在glibc主機上用uClibc編譯程序一樣。
ManxAztecC交叉編譯器
編輯馬恩島的軟件系統中,什魯斯伯里,新澤西州,生產C編譯器在20世紀80年xxx始面向專業開發人員為各種平臺直至并包括個人電腦和Mac電腦。
Manx的AztecC編程語言可用于各種平臺,包括MS-DOS、AppleII、DOS3.3和ProDOS、Commodore64、Macintosh68XXX和Amiga。
從1980年代一直持續到1990年代,直到ManxSoftwareSystems消失,AztecC的MS-DOS版本既作為本機模式編譯器提供,也作為具有不同處理器的其他平臺(包括Commodore64)的交叉編譯器提供]和AppleII。AztecC的Internet發行版仍然存在,包括基于MS-DOS的交叉編譯器。它們今天仍在使用。
Manx的AztecC86,他們的本機模式8086MS-DOS編譯器,也是一個交叉編譯器。盡管它沒有為Commodore64和AppleII的AztecC656502交叉編譯器等不同的處理器編譯代碼,但它為當時的16位8086系列處理器的遺留操作系統創建了二進制可執行文件。
當IBMPC首次推出時,它有多種操作系統可供選擇,CP/M-86和PCDOS就是其中的兩個。AztecC86提供了用于為IBMPC操作系統生成代碼的鏈接庫。整個1980年代后期的AztecC86版本(3.xx、4.xx和5.xx)增加了對MS-DOS“暫時性”版本1和2的支持,并且不如“基線”MS-DOS強大AztecC86在其消亡之前的第3版及更高版本。
最后,AztecC86為C語言開發人員提供了生成可ROM的“HEX”代碼的能力,然后可以使用ROM刻錄機將這些代碼直接傳輸到基于8086的處理器。半虛擬化在今天可能更為普遍,但在那些年代,設備驅動程序的開發通常由應用程序程序員為單個應用程序完成,而新設備則相當于一個家庭手工業。應用程序員在沒有制造商支持的情況下直接與硬件接口的情況并不少見。這種做法類似于今天的嵌入式系統開發。
ThomasFenwick和JamesGoodnowII是Aztec-C的兩個主要開發者。Fenwick后來成為著名的MicrosoftWindowsCE內核或當時稱為NK(“新內核”)的作者。
MicrosoftC交叉編譯器
編輯早期歷史–1980年代
MicrosoftC(MSC)的歷史比其他更短,可追溯到1980年代。xxx個微軟C編譯器是由制造LatticeC的同一家公司制造的,并被微軟重新命名為他們自己的公司,直到MSC4發布,這是微軟自己生產的xxx個版本。
1987年,許多開發人員開始轉向MicrosoftC,并且隨著MicrosoftWindows的發展直至目前的狀態,還有更多開發人員。像Clipper和后來的Clarion這樣的產品出現了,它們通過使用跨語言技術提供了簡單的數據庫應用程序開發,允許使用MicrosoftC編譯他們的部分程序。
BorlandC(加利福尼亞公司)在Microsoft發布其xxx個C產品之前數年就可以購買。
早在Borland之前,BSDUnix(伯克利大學)就從C語言的作者那里獲得了C:Kernighan和Ritchie,他們在為AT&T工作時共同編寫了它(實驗室)。K&R的原始需求不僅是優雅的第二級解析語法來替換asmxxx級解析語法:它的設計目的是為了支持每個平臺編寫最少量的asm(C的原始設計是能夠使用C與每個平臺的最少支持代碼,這是他們需要的。)。昨天的C也直接與ASM代碼相關,無論在何處不依賴于平臺。今天的C(更接近C++)不再是C兼容的,底層的asm代碼可能與在給定平臺上編寫的代碼截然不同(在Linux中:它有時會用分銷商的選擇替換和繞開庫調用)。今天的C是一種3級或4級語言,它像二級語言一樣使用舊方式。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/129157/