搭建交叉編譯環(huán)境 4.1.1、概述 交叉編譯,就是用運(yùn)行在一種計(jì)算機(jī)環(huán)境中的編譯程序,去編譯出在另外一種環(huán)境下運(yùn)行的代碼。具有這種能力的編譯器就叫交叉編譯器。換而言之,就是在一個(gè)平臺上生成另一個(gè)平臺上的可執(zhí)行代碼。這里所指的平臺實(shí)際上包含了軟/硬件兩個(gè)方面的概念:操作系統(tǒng)(Operating System)和體系結(jié)構(gòu)(Architecture)。同樣是Linux系統(tǒng),在不同體系結(jié)構(gòu)的硬件平臺上的可執(zhí)行代碼是不同的,譬如ARM和x86,因?yàn)樗鼈兊闹噶钕到y(tǒng)不一樣,所以可執(zhí)行代碼也就有差異。同樣是ARM平臺,由于操作系統(tǒng)的實(shí)現(xiàn)不一樣,可執(zhí)行代碼也會不一樣。 一般情況下,嵌入式Linux系統(tǒng)的資源緊張,無法安裝運(yùn)行所需的編譯器,甚至是目標(biāo)平臺都還沒有建立,連操作系統(tǒng)都沒有,根本談不上運(yùn)行編譯器。常用的做法是在一臺PC上搭建交叉編譯環(huán)境,即配置安裝交叉編譯工具鏈(針對目標(biāo)平臺的編譯器gcc、二進(jìn)制工具binutils、標(biāo)準(zhǔn)c庫glibc和linux內(nèi)核頭文件等等),在該環(huán)境下編譯出嵌入式Linux系統(tǒng)所需的操作系統(tǒng)系統(tǒng)、應(yīng)用程序等,然后再上傳到目標(biāo)平臺上。 4.1.2、安裝 要搭建交叉編譯環(huán)境,就需制作一個(gè)交叉編譯工具鏈,一般有三種途徑: 2 手工制作,一步步編譯 這種方式的難度比較大。制作交叉編譯工具鏈所需要的源碼包存在版本匹配的問題,如果編譯過程中出現(xiàn)了問題,去修正這些問題比較困難。另外還要為制作環(huán)境安裝好所需的工具軟件。 2 通過腳本編譯 用crosstool生成的腳本來制作,比手動編譯難度會小一些,但是需要修改腳本,要熟悉shell腳本知識。 2 直接獲取 網(wǎng)絡(luò)上有許多已經(jīng)制作好的交叉編譯工具鏈,直接下載,安裝配置下就行了。 有了交叉編譯工具鏈后,就可以安裝了。先把得到的壓縮包解壓到指定的目錄,然后再配置系統(tǒng)環(huán)境。在ubuntu下安裝配置ARM平臺的交叉編譯環(huán)境的步驟如下: 2 下載 下載廣州友善之臂計(jì)算機(jī)公司制作的交叉編譯工具鏈arm-linux-gcc-4.3.2.tgz,下載地址是“http://arm9download./linux/arm-linux-gcc-4.3.2.tgz”?;蚴窃诰W(wǎng)絡(luò)上搜索下,找到合適的交叉編譯工具鏈。 2 解壓 以root賬戶登錄系統(tǒng),把a(bǔ)rm-linux-gcc-4.3.2.tgz拷貝到根目錄下,然后解壓,執(zhí)行命令如下: # tar -zxvf arm-linux-gcc-4.3.2.tgz 2 配置系統(tǒng)環(huán)境變量 交叉編譯工具鏈安裝好了以后,最好先配置系統(tǒng)環(huán)境變量,把其所在的路徑加入進(jìn)PATH,這樣就能在任何目錄下方便的使用。通常,要修改環(huán)境變量,可以修改以下三個(gè)腳本中的一個(gè):全局(公有)配置腳本/etc/profile,所有用戶登錄時(shí)都要執(zhí)行;Shell初始化腳本/etc/bash.bashrc,也是所有用戶登錄時(shí)執(zhí)行的;root賬戶目錄下的Shell配置腳本/root/.bashrc(換成其他賬戶的話,就在其工作目錄下去找),僅僅是root賬號登錄時(shí)執(zhí)行的。推薦修改/etc/bash.bashrc文件,方法如下: v 打開文件 # vi /etc/bash.bashrc v 修改文件 在最后加上一行,添加如下內(nèi)容: export PATH=$PATH:/usr/local/arm/4.3.2/bin v 設(shè)置生效 如果要使新的環(huán)境變量立即生效,而不用重啟電腦,則執(zhí)行如下命令: # source /etc/bash.bashrc v 驗(yàn)證配置 可以使用如下指令檢查環(huán)境變量是否配置成功: # echo $PATH 修改其他的腳本文件方法類似,只是注意其影響是否覆蓋到登錄賬戶。 2 測試 環(huán)境變量配置好了,查看下arm-linux-gcc的版本信息,在終端中輸入: # arm-linux-gcc -v 再編寫一個(gè)測試程序test.c來測試下交叉編譯環(huán)境是否搭建成功,內(nèi)容如下: #include <stdio.h> int main(void) { printf("Hello arm gcc.\n"); return 0; } 編譯test.c,并用file查看可執(zhí)行程序的格式信息: # arm-linux-gcc -o test test.c # file test test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped |
|