交叉編譯器

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

交叉編譯器(英語:Cross compiler)是指一個在某個系統平台下可以產生另一個系統平台執行檔編譯器。交叉編譯器在目標系統平台(開發出來的應用程式序所執行的平台)難以或不容易編譯時非常有用。

交叉編譯器的存在對於從一個開發主機為多個平台編譯代碼是非常有必要的。直接在平台上編譯有時行不通,例如在一個嵌入式系統單片機 ,因為它們沒有完整的現代操作系統環境,無法直接編譯。

交叉編譯器和源代碼至源代碼編譯器不同,交叉編譯器用於二進制代碼的跨平台軟件開發,而源到源編譯器是將某種編程語言的程序源代碼作為輸入,生成以另一種編程語言構成的等效源代碼的編譯器,但兩者都是編程工具

使用[編輯]

交叉編譯器的基本用法就是將構建環境與目標環境分開。常在下面幾種情況中使用:

  • 嵌入式電腦。這種設備的資源有限,舉例來說:微波爐有一個非常小的計算機來讀取其觸摸板和門傳感器,並向數字顯示器和揚聲器提供輸出,以控制用於烹飪食物。這台計算機不足以運行編譯器,文件系統或開發環境,因為調試和測試需要更多的嵌入式系統資源,使得在目標機上編譯變得更不可能。採用交叉編譯,在資源足夠的機器上完成構建工作,就可以解決這個問題。
  • 編譯多個目標庫。舉個例子,一個公司可能希望支持不同版本或不同種類的操作系統,有了交叉編譯,便可以為每個目標設置一個編譯環境進行編譯。如:在Windows中為底層構造完全不同的Linux編譯程序;在電腦上為移動端操作系統構建程序。
  • 在服務器上編譯。類似於在多個機器進行編譯,一個複雜的編譯可能會涉及到許多的編譯操作,可以將這些編譯操作放到空閒的機器上執行,無論其底層硬件或其運行的操作系統版本如何。
  • 引導一個新平台Bootstrapping)。在為新平台開發軟件,或者開發/使用未來平台的仿真器時,則使用交叉編譯器來編譯必要的工具,如操作系統和本機編譯器。

程序虛擬機(比如JVM)也借鑑了當初開發交叉編譯器的理念。它可以用同一份輸出在多個目標系統上運行,但是編譯後的代碼必須運行在虛擬機上。

參見[編輯]