|  | |
| 搭建嵌入式交叉編譯環境 | |
| 搭建交(jiao)(jiao)(jiao)叉編譯(yi)環境(jing)是嵌入式(shi)開(kai)發的(de)第一(yi)(yi)步,也是關鍵(jian)的(de)一(yi)(yi)步。不同(tong)(tong)的(de)體(ti)系(xi)結(jie)構、不同(tong)(tong)的(de)操作(zuo)內容(rong)甚至(zhi)是不同(tong)(tong)版本的(de)內核,都(dou)會用到不同(tong)(tong)的(de)交(jiao)(jiao)(jiao)叉編譯(yi)器。選擇交(jiao)(jiao)(jiao)叉編譯(yi)器非常重要,有(you)些交(jiao)(jiao)(jiao)叉編譯(yi)器經常會有(you)部分的(de)BUG,都(dou)會導致后的(de)代碼(ma)無法正常運行。 交(jiao)叉(cha)(cha)(cha)編(bian)(bian)譯(yi)器完整的(de)安裝一(yi)(yi)般涉及多(duo)個軟(ruan)件(jian)的(de)安裝(讀者(zhe)可以從ftp://gcc.gnu.org/pub/下載),包括(kuo)binutils、gcc、glibc、glibc-linuxthreads等軟(ruan)件(jian)。其中(zhong),binutils主要(yao)用于生(sheng)成一(yi)(yi)些輔助工(gong)(gong)具(ju),如readelf、objcopy、objdump、as、ld等;gcc是用來生(sheng)成交(jiao)叉(cha)(cha)(cha)編(bian)(bian)譯(yi)器的(de),主要(yao)生(sheng)成arm-linux-gcc交(jiao)叉(cha)(cha)(cha)編(bian)(bian)譯(yi)工(gong)(gong)具(ju)(應該說,生(sheng)成此工(gong)(gong)具(ju)后(hou)已經搭建起(qi)交(jiao)叉(cha)(cha)(cha)編(bian)(bian)譯(yi)環(huan)境,可以編(bian)(bian)譯(yi)Linux內核了(le),但由于沒有提供標準用戶函(han)數庫(ku)(ku)(ku),用戶程序(xu)還(huan)無法(fa)編(bian)(bian)譯(yi));glibc主要(yao)是提供用戶程序(xu)所使用的(de)一(yi)(yi)些基(ji)本的(de)函(han)數庫(ku)(ku)(ku),glibc-linuxthreads是線程相關函(han)數庫(ku)(ku)(ku)。這樣,交(jiao)叉(cha)(cha)(cha)編(bian)(bian)譯(yi)環(huan)境就完全搭建起(qi)來了(le)。 上面所述的(de)(de)搭建交(jiao)叉編(bian)譯(yi)環境比較(jiao)復(fu)雜,很多步驟(zou)都涉及對硬件平臺的(de)(de)選擇。因此,現在嵌(qian)入式平臺社區或(huo)廠商一般會提供在各種(zhong)平臺上測試通過的(de)(de)交(jiao)叉編(bian)譯(yi)器(qi),或(huo)把以上安裝步驟(zou)全部(bu)寫入腳(jiao)本文(wen)件或(huo)者以發行(xing)包(bao)的(de)(de)形式提供,這樣就大(da)大(da)方便了用戶(hu)的(de)(de)使用。  這里(li)采(cai)用(yong)廣泛使(shi)用(yong)的cross-4.3.2交叉(cha)編譯器工具鏈,其使(shi)用(yong)方法(fa)非常(chang)簡(jian)單。     $ mkdir –p /usr/local/arm  /* 這是交叉編譯器安裝目錄*/  此時在/usr/local/arm/4.3.2/bin/下已經出現了很多交叉(cha)編譯工具,顯示如(ru)下:     arm-none-linux-gnueabi-addr2line      arm-none-linux-gnueabi-gfortran 可以看到,這個交(jiao)叉編譯工(gong)具集成(cheng)了binutils、gcc、glibc這幾個軟(ruan)件,而每個軟(ruan)件也都有比較(jiao)復雜的配置信(xin)息。 接下來,在(zai)環(huan)境(jing)變量PATH中添加(jia)路徑,就(jiu)可以直接使用arm-none-linux—gnueabi-gcc命令了。   $ export PATH=$PATH:/usr/local/arm/4.3.2/bin     把交叉開發工具鏈的路徑添加到環境變量PATH中,這樣可以方便地在Bash或者Makefile中使用這些工具。通常環境變量的配置文件有如下幾個。 把環境變量配(pei)置的命令添(tian)加到其中一個(ge)文件中即可。     $ arm-linux-gcc –v /*查看交叉編譯器的版本信息*/ 從上面打印的(de)(de)(de)版本信息中可以看到“--prefix=/usr/local/arm/ 4.3.2”,這就是交(jiao)叉編譯器安裝的(de)(de)(de)路(lu)徑(jing)(jing)。它是在編譯前通過prefix選(xuan)項配(pei)置的(de)(de)(de),所以,這個工具鏈(lian)安裝的(de)(de)(de)路(lu)徑(jing)(jing)必須是/usr/local/arm/4.3.2。 本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》 熱點鏈接:    
         1、構建嵌入式Linux交叉開發環境 |