![]() |
|
嵌入式培訓(xùn)資料:搭建交叉編譯環(huán)境 |
|
搭建交叉編譯環(huán)境是嵌入式開發(fā)的第一步,也是關(guān)鍵的一步。不同的體系結(jié)構(gòu)、不同的操作內(nèi)容甚至是不同版本的內(nèi)核,都會用到不同的交叉編譯器。選擇交叉編譯器非常重要,有些交叉編譯器經(jīng)常會有部分的BUG,都會導(dǎo)致后的代碼無法正常運行。 交叉編譯器完整的安裝一般涉及到多個軟件的安裝(讀者可以從ftp://gcc.gnu.org/pub/下載),包括binutils、gcc、glibc、glibc-linuxthreads等軟件。其中,binutils主要用于生成一些輔助工具,如readelf、objcopy、objdump、as、ld等;gcc是用來生成交叉編譯器的,主要生成arm-linux-gcc交叉編譯工具(應(yīng)該說,生成此工具后已經(jīng)搭建起了交叉編譯環(huán)境,可以編譯Linux內(nèi)核了,但由于沒有提供標(biāo)準用戶函數(shù)庫,用戶程序還無法編譯);glibc主要是提供用戶程序所使用的一些基本的函數(shù)庫,glibc-linuxthreads是線程相關(guān)函數(shù)庫。這樣,交叉編譯環(huán)境就完全搭建起來了。 上面所述的搭建交叉編譯環(huán)境比較復(fù)雜,很多步驟都涉及到對硬件平臺的選擇。因此,現(xiàn)在嵌入式平臺社區(qū)或廠商一般會提供在各種平臺上測試通過的交叉編譯器,而且也有很多把以上安裝步驟全部寫入腳本文件或者以發(fā)行包的形式提供,這樣就大大方便了用戶的使用。例如,crosstool是美國人Dan Kegel開發(fā)的一套可以自動編譯不同版本的交叉編譯器,關(guān)于該工具的使用請參考同一系列的教材“嵌入式系統(tǒng)技術(shù)與設(shè)計”。 在本文中采用廣泛使用的cross-3.3.2交叉編譯器工具鏈,其使用非常簡單。 $ mkdir –p /usr/local/arm /* 這是交叉編譯器安裝目錄*/ 此時在/usr/local/arm/3.3.2/bin/下已經(jīng)出現(xiàn)了很多交叉編譯工具。用戶可以查看arm文件夾下的VERSIONS文件,顯示如下: Versions 可以看到,這個交叉編譯工具確實集成了binutils、gcc、glibc這幾個軟件,而每個軟件也都有比較復(fù)雜的配置信息,讀者可以查看VERSIONS文件了解相關(guān)信息。 接下來,在環(huán)境變量PATH中添加路徑,就可以直接使用arm-Linux-gcc命令了。 $ export PATH=$PATH:/usr/local/arm/3.3.2/bin 把交叉開發(fā)工具鏈的路徑添加到環(huán)境變量PATH中,這樣可以方便地在Bash或者Makefile中使用這些工具。通?梢栽诃h(huán)境變量的配置文件有幾個: (1)profile類文件:用戶登錄時第一次僅運行一次,profile類文件包括每個用戶主目錄下的.profile文件和/etc/profile等。哪個用戶登錄就會運行主目錄下的.profile文件的腳本。 (2)bashrc類文件:每當(dāng)打開bash shell時(例如,當(dāng)打開一個虛擬終端時)運行改腳本文件。bash類文件包括每個用戶主目錄下的.bashrc文件和/etc/bash.bashrc等。 把環(huán)境變量配置的命令添加到其中一個文件中即可。 $ arm-linux-gcc –v /*查看交叉編譯器的版本信息*/ 從上面打印的版本信息中可以看到“--prefix=/usr/local/arm/3.3.2”,這就是交叉編譯器安裝的路徑。它是在編譯前通過prefix選項配置的。所以,這個工具鏈安裝的路徑必須是/usr/local/arm/3.3.2。 熱點鏈接:
1、什么是嵌入式系統(tǒng)
|