搭建嵌入式交叉編譯環境
本文中所使用的Ubuntu 14.04.3,交叉編譯器的安裝一般需要涉及到多種軟件,但這個過程一般比較複雜,現在很多嵌入式社區提供了測試通過的交叉編譯器,本文中採用的是友善之臂的arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz。
1. 解壓文件
tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /
注意: C後面有個空格,並且C是大寫的(必須),它是英文單詞“Change”的第一個字母,在此是改變目錄的意思。執行該命令,將把arm-linux-gcc 安裝到/opt/FriendlyARM/toolschain/4.5.1 目錄。
另外自己在安裝過程出現如下所示的報錯:
gzip: stdin: unexpected end of file
tar: 歸檔文件中異常的 EOF
tar: 歸檔文件中異常的 EOF
tar: Error is not recoverable: exiting now
通過在網上搜索,原因一方面可能是解壓格式是否選對或者是下載的壓縮包破壞,自己的解壓命令輸入是無誤的,壓縮包也是光盤解壓,連續從找了好幾個版本的都是報這個錯誤,同學複製過來的也有問題,最初以爲是自己的Ubuntu系統問題,但是對其他的壓縮包就可以正常解壓,後來思考可能是因爲通過VMwareTools傳輸文件到虛擬機的過程中出現的文件損壞,果斷換了WinSCP傳送,最後果然可以正常解壓了。
2. 建立目錄複製文件
sudo mkdir /usr/local/arm
sudo cp -r /opt/FriendlyARM/toolschain/4.5.1/ /usr/local/arm
3. 配置環境變量
目前我們只是安裝了交叉編譯器,但使用時只能在當前目錄下,因此需要配置環境變量,保證在其他路徑下也能找到交叉編譯器。
方法一:修改/etc/bash.bashrc文件(此文件只對當前用戶適用)
sudo gedit /etc/bash.bashrc
在最後加上 export PATH=$PATH:/usr/local/arm/4.5.1/bin (路徑)(注意等號那邊不要有空格)方法二:修改/etc/profile文件(此文件屬於系統級別的環境變量,設置在裏面的東西對所有用戶適用,本文采用的是這種方法)
sudo gedit /etc/profile
增加路徑設置,在末尾添加如下:
export PATH=$PATH:/usr/local/arm/4.5.1/bin方法三:修改/etc/environment文件
sudo gedit /etc/environment
原文件應爲
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.5.1/bin”
4. 註冊環境變量
爲了使之前配置的環境變量生效,一種方法是註銷系統重新進入,另外還可以採用其他方式註冊環境變量,採用source指令
source /etc/bash.bashrc
source /etc/profile
方法三立即生效,不用註冊。
5. 檢測是否安裝成功。
echo $PATH
顯示如下信息,說明環境變量註冊成功。/usr/java/java-8-sun/bin:/usr/java/java-8-sun/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin:/opt/Sublime Text 2:/usr/local/arm/4.5.1/bin/
arm-linux-gcc
Using built-in specs.
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/usr/local/arm/4.5.1/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /work/toolchain/build/src/gcc-4.5.1/configure –build=i686-build_pc-linux-gnu –host=i686-build_pc-linux-gnu –target=arm-none-linux-gnueabi –prefix=/opt/FriendlyARM/toolschain/4.5.1 –with-sysroot=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root –enable-languages=c,c++ –disable-multilib –with-cpu=arm1176jzf-s –with-tune=arm1176jzf-s –with-fpu=vfp –with-float=softfp –with-pkgversion=ctng-1.8.1-FA –with-bugurl=http://www.arm9.net/ –disable-sjlj-exceptions –enable-__cxa_atexit –disable-libmudflap –with-host-libstdcxx=’-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm’ –with-gmp=/work/toolchain/build/arm-none-linux-gnueabi/build/static –with-mpfr=/work/toolchain/build/arm-none-linux-gnueabi/build/static –with-ppl=/work/toolchain/build/arm-none-linux-gnueabi/build/static –with-cloog=/work/toolchain/build/arm-none-linux-gnueabi/build/static –with-mpc=/work/toolchain/build/arm-none-linux-gnueabi/build/static –with-libelf=/work/toolchain/build/arm-none-linux-gnueabi/build/static –enable-threads=posix –with-local-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root –disable-nls –enable-symvers=gnu –enable-c99 –enable-long-long
Thread model: posix
gcc version 4.5.1 (ctng-1.8.1-FA)
輸出如上結果,至此,交叉編譯器安裝成功。