在進(jìn)行嵌入式開發(fā)之前,首先要建立一個(gè)交叉編譯環(huán)境,這是一套編譯器、連接器和libc庫等組成的開發(fā)環(huán)境。本文具體說明了嵌入式交叉編譯環(huán)境的建立過程和具體的操作步驟,希望能夠?qū)Ω魑慌笥汛罱▽?yīng)的交叉編譯環(huán)境有所幫助。
一、所需軟硬件環(huán)境
n 主機(jī)環(huán)境
建立交叉編譯工具鏈的主機(jī)環(huán)境:
Ubuntu 8.10,gcc-4.3.2
n Ubuntu 8.10軟件環(huán)境
保證你的 Ubuntu 8.10 安裝了如下的軟件:
Bison flex build-essential patch libncurses5-dev
安裝這些軟件包:
sudo apt-get install Bison flex build-essential patch libncurese5-dev
或直接下載下列deb軟件包
bison_13a2.3.dfsg-4build1_i386.deb
build-essential_11.4_i386.deb
flex_2.5.33-10build1_i386.deb
libncurses5-dev_5.6+20071124-1ubuntu2_i386.deb
m4_1.4.8-1build1_i386.deb
patch_2.5.9-5_i386.deb
然后 sudo dpkg –i *.deb 安裝這些軟件包。
n 相關(guān)軟件包
本方案所選軟件包如下:
gcc-3.4.5.tar.gz
glibc-2.3.6.tar.gz
linux-2.6.26.5.tar.gz
crosstool-0.43.tar.gz
binutils-2.15.tar.gz
glibc-linuxthreads-2.3.3.tar.gz
linux-libc-headers-2.6.12.0.tar.bz2
二、具體工作步驟
1、修改系統(tǒng)配置
1.1、Ubuntu 8.10 默認(rèn)安裝的 gcc 版本為4.3.2,這個(gè)版本對于語法要求較高,編譯會出錯(cuò),目前不宜選用,于是選擇了 gcc-4.1.1 ,但并不需要卸載 gcc-4.3.2。
?。?)第一種方法:直接在終端輸入安裝gcc-4.1
sudo apt-get install gcc-4.1
(2)第二種方法:下載下列軟件包:
gcc-4.1_4.1.2-23ubuntu3_i386.deb
gcc-4.1-base_4.1.2-23ubuntu3_i386.deb
cpp-4.1_4.1.2-23ubuntu3_i386.deb
然后sudo dpkg –i *.deb
安裝就可以了
sudo rm /usr/bin/gcc (刪除GCC,它只是個(gè)到gcc-4.3.2的軟鏈接文件)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的軟鏈接)
1.2、修改sh版本
如果運(yùn)行
ls -la /bin/sh
看到鏈接的是 dash ,則請運(yùn)行以下命令
sudo dpkg-reconfigure dash
選擇 no 以刪除 dash
此處如果不改好的話,編譯時(shí)會出現(xiàn)錯(cuò)誤
2.解壓軟件包,并進(jìn)入該目錄,查看重要的腳本文件。
$cd downloads
$tar –zxvf crosstool-0.43.tar.gz
$cd crosstool-0.43
在此目錄下可以看到有很多.sh腳本和.dat配置文件,每一個(gè)支持的處理器都有它所相應(yīng)的腳本。假如選用demo-arm-softfloat.sh 就是建立目標(biāo)為支持軟浮點(diǎn)的arm交叉編譯工具鏈。
3.修改demo-arm-softfloat.sh
$vim demo-arm-softfloat.sh
修改下面兩句
TARBALLS_DIR=$HOME/downloads //表示下載的源碼的存放目錄
RESULT_TOP=/opt/crosstools //表示生成的工具鏈的存放目錄
為:
TARBALLS_DIR=/home/linux/downloads(源碼存放目錄)
RESULT_TOP=/home/linux/crosstools(生成工具鏈目錄)
4.修改 gcc-3.4.5-glibc-2.3.6.dat
$ vim gcc-3.4.5-glibc-2.3.6.dat
修改內(nèi)容為:
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.26.5
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
5.$ 。/ demo-arm-softfloat.sh
這個(gè)過程較長(半個(gè)小時(shí)左右)
6.修改環(huán)境變量
修改環(huán)境變量有多種方法我們介紹兩種
?。?)第一種方法:在當(dāng)前終端輸入如下內(nèi)容(這種方法只在當(dāng)前終端有效):
$export PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:
(2)第二種方法:或直接修改/home/linux/.bashrc
進(jìn)入用戶目錄:
cd /home/linux
vim .bashrc
添加如下內(nèi)容:
PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:
然后
source .bashrc
7.執(zhí)行如下命令
$ arm-softfloat-linux-gnu-gcc -v
顯示
Reading specs from /home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs
Configured with: /home/david/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu --with-float=soft --with-headers=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include --with-local-prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu --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.5
ok交叉編譯環(huán)境創(chuàng)建成功!
8.恢復(fù)我們修改的系統(tǒng)配置:
恢復(fù)gcc為4.3
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc
重新安裝dash
sudo dpkg-reconfigure dash
選擇 yes 以重新安裝 dash
評論
查看更多