1. 程式人生 > >交叉編譯,為什麽需要交叉編譯

交叉編譯,為什麽需要交叉編譯

ava 通過 運行速度 磁盤空間 要花 嵌入式系統 nbsp 工具 磁盤

本地編譯

本地編譯可以理解為,在當前編譯平臺下,編譯出來的程序只能放到當前平臺下運行。平時我們常見的軟件開發,都是屬於本地編譯:

比如,我們在 x86 平臺上,編寫程序並編譯成可執行程序。這種方式下,我們使用 x86 平臺上的工具,開發針對 x86 平臺本身的可執行程序,這個編譯過程稱為本地編譯。

交叉編譯

交叉編譯可以理解為,在當前編譯平臺下,編譯出來的程序能運行在體系結構不同的另一種目標平臺上,但是編譯平臺本身卻不能運行該程序:

比如,我們在 x86 平臺上,編寫程序並編譯成能運行在 ARM 平臺的程序,編譯得到的程序在 x86 平臺上是不能運行的,必須放到 ARM 平臺上才能運行。

為什麽會有交叉編譯

之所以要有交叉編譯,主要原因是:

  • Speed: 目標平臺的運行速度往往比主機慢得多,許多專用的嵌入式硬件被設計為低成本和低功耗,沒有太高的性能
  • Capability: 整個編譯過程是非常消耗資源的,嵌入式系統往往沒有足夠的內存或磁盤空間
  • Availability: 即使目標平臺資源很充足,可以本地編譯,但是第一個在目標平臺上運行的本地編譯器總需要通過交叉編譯獲得
  • Flexibility: 一個完整的Linux編譯環境需要很多支持包,交叉編譯使我們不需要花時間將各種支持包移植到目標板上

交叉編譯,為什麽需要交叉編譯