前言 交叉編譯,即在一種平台上編譯,並能夠執行在另一種體系結構完全不同的平台上。交叉編譯使用的工具,一般稱為交叉編譯工具,由於它是由多個程式構成,所以又稱為交叉編譯工具鏈。
交叉開發工具鏈就是為了編譯、鏈結、處理和除錯跨平台體系結構的程式**。每次執行工具鏈軟體時,通過帶有不同的引數,可以實現編譯、鏈結、處理或者除錯等不同的功能。
工具鏈的組成
工具鏈一般由編譯器、聯結器、直譯器和偵錯程式組成。
linux下經常使用的工具鏈軟體有:binutils、gcc、glibc和gdb。
binutils是二進位制程式處理工具,包括聯結器、彙編器等目標程式處理的工具。
gcc(gnu compiler collection)是編譯器,支援c/c++等多種語言。對於c/c++語言的完整支援,需要glibc庫。
glibc是應用程式程式設計的函式庫軟體包,可以編譯生成靜態庫和共享庫,完整的gcc需要支援glibc。
gdb是除錯工具,可以讀取可執行程式中的符號表,對程式進行原始碼除錯。
通過這些軟體包,可以生成gcc、g++、ar、as、ld等編譯鏈結工具,還可以生成glibc庫和gdb偵錯程式。在生成交叉開發的工具鏈時,可以在檔案名字上加乙個字首,用來區別本地的工具鏈,例如,arm-linux-gcc,表示這個編譯器用於編譯在linux系統下arm目標平台上執行的程式。
構建工具鏈
構建交叉編譯器的第乙個步驟就是確定目標平台。在gnu系統中,每個目標平台都有乙個明確的格式,這些資訊用於在構建過程中識別要使用的不同工具的正確版本。因此,當在乙個特定目標機下執行gcc時,gcc便在目錄路徑中查詢包含該目錄規範的應用程式路徑。gnu的目標規範格式為cpu-platform-os。例如,x86/i386目標機名為i686-pc-linux。我們這裡要建立基於arm平台的交叉工具鏈,所以目標平台名為arm-linux。
通常,構建交叉編譯工具鏈有如下三種方法:
(1)分步編譯和安裝交叉編譯工具鏈所需要的庫和源**,最終生成交叉編譯工具鏈。該方法相對比較困難,如果只是想使用交叉編譯工具鏈,建議使用下面方法。
(2)通過crosstool指令碼工具來實現一次編譯,生成交叉編譯工具鏈,該方法相對方法(1)簡單許多,並且出錯的機會也非常少,建議大多數情況下使用該方法構建交叉編譯工具鏈。
ftp.kernel.org
ftp.gnu.org
交叉編譯工具
準備工具和系統 arm linux gcc 4.4.3.tar.gz arm linux gcc 4.4.3 使用者名稱 www.linuxidc.com 密碼 www.muu.cc 在 2011年linuxidc.com 10月 android系統移植 建立arm linux交叉編譯環境 ubun...
交叉編譯工具
arm linux gcc c o led.o led.s arm linux ld ttext 0 led.o o led.elf arm linux objcopy o binary s led.elf led.bin arm linux objdump d led.elf led.disarm...
安裝交叉編譯工具
2.安裝 mkdir usr local arm cd usr local arm 新增環境變數,這樣在任何目錄下都可以使用該工具 1 vim bash profile 2 新增如下語句 path path usr local arm 2.95.3 bin 3 讓剛修改的環境變數檔案立即生效 sor...