嵌入式Linux實戰篇--交叉編譯環境的建立(基於ubuntu 8.10)

 

作者:曹忠明,華清遠見嵌入式學院講師

在進行嵌入式開發之前,首先要建立一個交叉編譯環境,這是一套編譯器、連接器和libc庫等組成的開發環境。本文具體說明了嵌入式交叉編譯環境的建立過程和具體的操作步驟,希望能夠對各位朋友搭建對應的交叉編譯環境有所幫助。

一、所需軟硬件環境

■ 主機環境

建立交叉編譯工具鏈的主機環境:

Ubuntu 8.10,gcc-4.3.2

■ Ubuntu 8.10軟件環境

保證你的 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 安裝這些軟件包。

■ 相關軟件包

本方案所選軟件包如下:

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、修改系統配置

1.1、Ubuntu 8.10 默認安裝的 gcc 版本爲4.3.2,這個版本對於語法要求較高,編譯會出錯,目前不宜選用,於是選擇了 gcc-4.1.1 ,但並不需要卸載 gcc-4.3.2。

(1)第一種方法:直接在終端輸入安裝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,它只是個到gcc-4.3.2的軟鏈接文件)

sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的軟鏈接)

1.2、修改sh版本

如果運行

ls -la /bin/sh

看到鏈接的是 dash ,則請運行以下命令

sudo dpkg-reconfigure dash

選擇 no 以刪除 dash

此處如果不改好的話,編譯時會出現錯誤

2.解壓軟件包,並進入該目錄,查看重要的腳本文件。

$cd downloads

$tar –zxvf crosstool-0.43.tar.gz

$cd crosstool-0.43

在此目錄下可以看到有很多.sh腳本和.dat配置文件,每一個支持的處理器都有它所相應的腳本。假如選用demo-arm-softfloat.sh 就是建立目標爲支持軟浮點的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

修改內容爲:

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

這個過程較長(半個小時左右)

6.修改環境變量

修改環境變量有多種方法我們介紹兩種

(1)第一種方法:在當前用戶目錄的.bashrc中添加如下內容

$export PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

(2)第二種方法:或直接修改/home/linux/.bashrc

cd /home/linux

vim .bashrc

添加如下內容:

PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

然後

source .bashrc

7.執行如下命令

$ 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交叉編譯環境創建成功!

8.恢復我們修改的系統配置:

恢復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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章