armgcc交叉編譯
① ubuntu中安裝交叉編譯環境,arm-linux-gcc-vnotfound
在Ubuntu系統中遇到安裝交叉編譯環境,尤其是arm-linux-gcc時,可能出現找不到arm-linux-gcc的問題。這通常發生在64位的Ubuntu系統上。盡管在32位Ubuntu系統上配置好環境後通常不會遇到此問題,但在64位系統中執行arm-linux-gcc時,可能會出現提示找不到該文件或目錄的錯誤。
解決這個問題的關鍵在於確保系統中包含了32位運行庫。在64位系統中運行32位的unicorn(arm-linux-gcc)需要相應的32位運行庫支持。通過執行以下命令:
sudo apt-get install ia32-libs
即可解決這個問題。此命令將安裝ia32-libs庫,它包含了在64位系統中運行32位應用所需的所有32位庫文件。安裝完成後,嘗試再次執行arm-linux-gcc,問題應該會得到解決。
這是一個簡單而有效的解決方案,確保了在64位Ubuntu系統中能夠正常安裝並使用arm-linux-gcc進行交叉編譯工作。
請注意,這個解決方案基於在64位Ubuntu系統中解決arm-linux-gcc找不到問題的情況。如果遇到其他與交叉編譯環境相關的錯誤,可能需要進一步檢查系統配置、依賴庫以及編譯器版本等。
感謝提供問題解決方案的作者,希望這些信息對遇到類似問題的開發者有幫助。
② 如何安裝arm-linux-gcc
安裝armlinuxgcc的步驟如下:
下載安裝包或源碼:
- 最常見的方式是下載armlinuxgcc的安裝包,也可以從網上下載其源碼。
解壓安裝包:
- 進入Linux系統,將當前目錄設為armlinuxgcc的下載目錄。
- 輸入命令tar xzf armlinuxgcc4.4.3.tar.gz,將文件解壓。解壓後會有一個opt的文件夾。
創建並設置目錄:
- 在/usr/local/中建立一個名為arm的文件夾。
- 輸入命令cd /usr/local/進入該目錄。
- 輸入命令mkdir arm創建arm目錄。
- 修改該文件夾的屬性為可讀寫執行,輸入命令chmod 777 arm。
復制源碼到目標目錄:
- 在Linux終端中輸入命令sudo cp r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/arm,將解壓得到的源碼復制到上一步中創建的arm文件夾下。注意路徑可能因解壓後的文件結構而異,需根據實際情況調整。
修改環境變數:
- 為了避免每次使用armlinuxgcc時都要輸入完整路徑,需要修改環境變數$PATH。
- 輸入命令sudo gedit /etc/profile打開profile文件。
- 在最後一行加上export PATH=$PATH:/usr/local/arm/4.4.3/bin。
- 保存文件並退出編輯器。
使新的環境變數生效:
- 輸入命令source /etc/profile使新的環境變數設置生效。
- 輸入命令echo $PATH查看當前環境變數,確認已包含armlinuxgcc的路徑。
驗證安裝:
- 輸入命令armlinuxgcc v查看版本信息。
- 如果出現版本信息則表示安裝成功。
按照以上步驟操作,即可成功安裝armlinuxgcc交叉編譯工具。
③ 如何製作arm-linux-gcc編譯工具
一、下載源文件
源代碼文件及其版本:
binutils-2.19.tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6.25.tar.bz2 (由於我在編譯出錯的過程中,根據出錯的信息修改了相關的C代碼,故而沒有下載相應的補丁)
一般一個完整的交叉編譯器涉及到多個軟體,主要包括bilinguals、cc、glibc等。其中,binutils主要生成一些輔助工具;gcc是用來生成交叉編譯器,主要生成arm-linux-gcc交叉編譯工具,而glibc主要提供用戶程序所需要的一些基本函數庫。
二、建立工作目錄
編譯所用主機型號 fc14.i686,虛擬機選的是VM7.0,Linux發行版選的是Fedora9,
第一次編譯時用的是root用戶(第二次用一般用戶yyz), 所有的工作目錄都在/home/yyz/cross下面建立完成,首先在/home/yyz目錄下建立cross目錄,然後進入工作目錄,查看當前目錄。命令如下:
創建工具鏈文件夾:
[root@localhost cross]# mkdir embedded-toolchains
下面在此文件夾下建立如下幾個目錄:
setup-dir:存放下載的壓縮包;
src-dir:存放binutils、gcc、glibc解壓之後的源文件;
Kernel:存放內核文件,對內核的配置和編譯工作也在此完成;
build-dir :編譯src-dir下面的源文件,這是GNU推薦的源文件目錄與編譯目錄分離的做法;
tool-chain:交叉編譯工具鏈的安裝位;
program:存放編寫程序;
doc:說明文檔和腳本文件;
下面建立目錄,並拷貝源文件。
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
拷貝源文件:
這里我們採用直接拷貝源文件的方法,首先應該修改setup-dir的許可權
[root@localhost embedded- toolchains] #chmod 777 setup-dir
然後直接拷貝/home/yyz目錄下的源文件到setup-dir目錄中,如下圖:
建立編譯目錄:
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
三、輸出環境變數
輸出如下的環境變數方便我們編譯。
為簡化操作過程。下面就建立shell命令腳本environment-variables:
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
用編輯器vi編輯環境變數腳本envionment-variables:[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
截圖如下:
執行如下語句使環境變數生效:
[root@localhost scripts]# source ./environment-variables
四、建立二進制工具(binutils)
下面將分步介紹安裝binutils-2.19.1的過程。
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2.19.1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
創建Makefile:
[root@localhost build-binutils] #../../src-dir/binutils-2.19.1/configure --target=$TARGET --prefix=$PREFIX
在build-binutils目錄下面生成Makefile文件,然後執行make,make install,此過程比較緩慢,大約需要一個15分鍾左右。完成後可以在$PREFIX/bin下面看到我們的新的binutil。
輸入如下命令
[root@localhost build-binutils]#ls $PREFIX/bin