arm-linux-gcc交叉編譯環(huán)境
Posted on 2010-11-25 15:09 幻海藍(lán)夢(mèng) 閱讀(2170) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Linux 1.下載arm-linux-gcc-3.4.1.tar.bz2到任意的目錄下。
arm-linux-gcc-3.4.1.tar.bz2 的下載地址如下:
http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
2.解壓 arm-linux-gcc-3.4.1.tar.bz2
#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
解壓過(guò)程需要一段時(shí)間,解壓后的文件形成了 usr/local/ 文件夾,進(jìn)入該文件夾,將arm文件夾拷貝到/usr/local/下
# cd usr/local/
#cp -rv arm /usr/local/
現(xiàn)在交叉編譯程序集都在/usr/local/arm/3.4.1/bin下面了
3. 修改環(huán)境變量,把交叉編譯器的路徑加入到PATH。大連主機(jī)托管.(有三種方法,強(qiáng)烈推薦使用方法一)
方法一:修改/etc/bash.bashrc文件
#vim /etc/bash.bashrc
在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
export PATH
(如果不能編輯,先修改相關(guān)文件的權(quán)限使用chmod命令。)
方法二:修改/etc/profile文件:
# vim /etc/profile
增加路徑設(shè)置,在末尾添加如下,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin
注:(這只能在當(dāng)前的終端下才是有效的!)
4. 立即使新的環(huán)境變量生效,不用重啟電腦:
對(duì)應(yīng)方法一:#source /root/.bashrc
對(duì)應(yīng)方法二:# source /etc/profile
5. 檢查是否將路徑加入到PATH:
# echo $PATH
顯示的內(nèi)容中有/usr/local/arm/bin,說(shuō)明已經(jīng)將交叉編譯器的路徑加入PATH。至此,交叉編譯環(huán)境安裝完成。
6.測(cè)試是否安裝成功
# arm-linux-gcc -v
上面的命令會(huì)顯示arm-linux-gcc信息和版本,這是我顯示的信息:
Reading specs from
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
Configured with:
/work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-
3.4.1/configure –target=arm-linux –host=i686-host_pc-linux-gnu
–prefix=/usr/local/arm/3.4.1 –with-headers=/usr/local/arm/3.4.1/arm
-linux/include –with-local-prefix=/usr/local/arm/3.4.1/arm-linux
–disable
-nls –enable-threads=posix –enable-symvers=gnu –enable-__cxa_atexit
–enable- languages=c,c++ –enable-shared –enable-c99 –enable-long-long
Thread model: posix
gcc version 3.4.1
7.編譯Hello World程序,測(cè)試交叉工具鏈
寫(xiě)下下面的Hello World程序,保存為 hello.c
#include
int main()
{
printf(”Hello World!\n”);
return 0;
}
執(zhí)行下面的命令:
# arm-linux-gcc -o hello hello.c
源程序有錯(cuò)誤的話會(huì)有提示,沒(méi)有任何提示的話,就是通過(guò)了,就可以下載到ARM目標(biāo)板上運(yùn)行了!
接著可以輸入file
hello的命令,查看生成的hello文件的類(lèi)型,要注意的是生成的可執(zhí)行文件只能在ARM體系下運(yùn)行,不能在其于X86的PC機(jī)上運(yùn)行。
ubuntu 10.04 建立交叉編譯環(huán)境 arm-linux-gcc-4.3.2
建立交叉編譯環(huán)境arm-linux-gcc-4.3.2。
1. 將友善科技光盤(pán)的arm-linux-gcc-4.3.2.tgz復(fù)制到任意路徑下;
2. 確保安裝了標(biāo)準(zhǔn)C開(kāi)發(fā)環(huán)境,一句命令搞定:sudo apt-get install build-essential
libncurses5-dev;
3.在終端進(jìn)入arm-linux-gcc-4.3.2.tgz存放目錄,再sudo tar -zxvf
arm-linux-gcc-4.3.2.tgz -C /(注意大寫(xiě)C字母后留一個(gè)空格,這樣會(huì)自動(dòng)解壓縮到/usr/local/4.3.2目錄下)
修改環(huán)境變量,使交叉編譯環(huán)境生效。我是執(zhí)行如下命令:
yagerya@yagerya-desktop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
yagerya@yagerya-desktop:~$ sudo gedit /etc/environment
原文件應(yīng)為PATH=”/usr/local/sbin:/usr/local/bin:/usr
/sbin:/usr/bin:/sbin:/bin:
/usr/games“將其改為PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin”保存退出即可。然后注銷(xiāo)重新登錄就可使環(huán)境變量生效
了。
我不推薦大家這樣做,我試過(guò)了在編譯內(nèi)核時(shí)無(wú)論執(zhí)行sudo -s后,再執(zhí)行arm-linux-gcc -v也沒(méi)有出現(xiàn)環(huán)境變量的信息,故cd
/opt/FriendlyARM/mini2440后,無(wú)論make zImage或sudo make zImage
都出現(xiàn)無(wú)法再到arm-linux的情況!
所以我推薦大家這樣做:
yagerya@yagerya-desktop:~$ vim ~/.profile
在這個(gè)文件最后添加上自己的環(huán)境變量:export PATH=$PATH:/usr/local/arm/4.3.2/bin
然后在終端執(zhí)行source ~/.profile ,即可立即生效。
yagerya@yagerya-desktop:~$ arm-linux-gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with:
/scratch/julian/lite-respin/linux/src/gcc-4.3/configure
–build=i686-pc-linux-gnu –host=i686-pc-linux-gnu
–target=arm-none-linux-gnueabi –enable-threads –disable-libmudflap
–disable-libssp –disable-libstdcxx-pch –with-gnu-as –with-gnu-ld
–enable-languages=c,c++ –enable-shared –enable-symvers=gnu
–enable-__cxa_atexit –with-pkgversion=’Sourcery G++ Lite 2008q3-72′
–with-bugurl=https://support.codesourcery.com/GNUToolchain/ –disable-nls
–prefix=/opt/codesourcery
–with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc
–with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc
–with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
–with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr
–disable-libgomp –enable-poison-system-directories
–with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin
–with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
yagerya@yagerya-desktop:~$
4.編譯內(nèi)核,切到root 帳戶編譯kernel: sudo passwd root 后,設(shè)置root密碼,后su -切換到root,
然后參考友善之臂的user manuals 一步步make zImage開(kāi)始編譯。