製作mipsel-linux交叉編譯工具1

前言
    在嵌入式開發中,MIPs處理器是常見的幾中處理器類型之一。另一方面,Linux是開源軟件,應用範圍很廣, 因其對包括MIPS在內的多種嵌入式處理器架構的良好支持. 因此在嵌入式應用也.也大量採用Linux。在嵌入式開發過程中,很容易獲得運行於x86架構PC上的Linux,並可使用其上的豐富的工具。gcc是Linux中一個很著名的C編譯器,在編譯Linux核心時,就要用到gcc。在PC機的Linux系統中用自身的gcc重新編譯Linux核心和其它應用是容易。而嵌入式應用是要求在MIPs架構的平臺上佈署Linux系統和其上的應用,但在開發的過程中.獲得運行於MIPS架構的Linux系統的開發環境幾乎是不可能的。
    因此,就提出了交叉編譯(cross-compile)的概念.也就是說要在運行於x86架構PC的Linux系統中編譯出能在MIPS架構的平臺上運行的Linux核心和其上的應用。這樣,就可以用PC較強的運算能力,和其Linux系統中的工具完成軟件的編寫、編譯甚至是調試。在下面的章節中.將介紹交叉編譯工具鏈的一般製作過程和mipsel-linux的具體制作步驟。

構造系統介紹
    這是一臺運行Linux的PC,因整個過程要完成大量的編譯工作,因此推薦使用有較高運算能力的x86兼容PC.如Intel的P4系統。同時,編譯過程會需要1G左右的硬盤空間。
    在這個系統上裝好RedHat Linux和gcc,以下是實驗所用的構造系統的版本信息.供參考:
$uname -a
Linux www.biforee 2.4.20-8 #1 Thu Mar 13 17:54:28 EST
2003 i686 i686 i386 GNU/Lnux
$gcc -v
Reading specs from /usr/lib/gcc -lib/i386 -redhat -linux/3.2.2/
specs
Configured with: ../configure --prefix=/usr  --mandir=/usr/share/
man --infodir=/usr/share/info --enable -shared --enable -threads=
posix --disable -checking --with -system -zlib --enable -_cxa_a-
texit --host=i386-redhat-linux
Thread model:posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
可以看出,所用的RedHat Linux版本是2.4.20,gcc的版本是3.2.2。

構造中會用到的源代碼準備
    在構造過程中,需要準備以下源碼供使用:
(1)binutils-2.13:下載地址是ftp://ftp.gnu.org/gnu/binutils/binutils-2.13.tar.gz
(2)gcc-3-2:下載地址是ftp://ftp.gnu.org/gnu/gcc/gcc-3.2.tar.gz
(3)glibc-2.2.5:下載地址是ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.5.tar.gz
(4)glibc-linuxthreads-2.2.5:這是個glibc的補丁下載地址是
ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.5.tar.gz
(5)glibc-2.2.5-mips-build-gmon.diff:這是另一個glibc的補丁
下載地址是http://www.ltc.com/~brad/mips/glibc-2.2.5-mips-build-gmon.diff
(6)linux-2.4.tar.gz:linux核的源碼包.可從網站http://www.linux.org/上下載。用root用戶登到Linux系統中.建立工作目錄/home/crosstool/tmp.並將上述文件放到這個目錄中備用。

4 Linux頭文件準備
    這些頭文件在編譯gcc時要用到,正確構造這些文件,很重要。
a)將HOST的Linux的/usr/include拷貝過來
cp -r /usr/include /home/crosstool/tmp/
b)去除其中的兩個目錄
rm -r -f /home/crosstool/tmp/include/asm
rm -r -f /home/crosstool/tmp/include/linux
c)解開linux源碼包
cd/home/crosstool/tmp
tar xvfz ../linux2.4.tar.gz
d)按Target要求完成核心配置.主要是選擇正確的CPU類型和內核部件.使這個內核的配置涵蓋目標系統的要求。
cd/home/crosstool/tmp/linux
make clean
make menuconfig
……
參照有關Linux核心配置的說明完成正確的配置過程。
make dep
e)將配置好的核心的兩個目錄取出
cp -dR include/linux/home/crosstool/tmp/include/
cp -dR include/asm-mips /home/crosstool/tmp/include/asm
至此,頭文件已準備好了,可用以下命令查看:
ls /home/crosstool/tmp/include

編譯binutils
    這裏生成一些binary格式的處理工具,如mipsel-linux-ld、mipsel-linux-objdump等。
(a)解壓縮,得到源代碼
cd /home/crosstool/tmp
tar xvfz ../binutils-2.13.tar.gz
(b)完成配置和編譯。configure會在/home/crosstool/tmp/binutils-2.13/mipsel-linux/目錄下生成正確的Makefile;--prefix指出安裝binutils的目錄前綴,也是這些工具工作時的工作路徑前綴;--target指出這些工具服務的目標系統。
cd /home/crosstool/tmp/binutils-2.1 3
mkdir mipsel-linux
cd mipsel-linux
../configure 
--prefix=/usr/locallcross-gcc/mipsel-linux 
--target=mipsel-linux
make
make install
    完成安裝後,在/usr/local/cross-gcc/mipsel-linux/bin目錄下得到一組工具.其中就有mipsel-linux-ld,執行/usr/local/cross-gcc/mipsel-linux/bin/mipsel-linux-ld -verbose,從輸出信息中可看到lib的位置指定SEARCH_DIR ("/usr/local/cross-gcc/mipsel-linux/mipsel-linux/lib");glibc產生的庫要放到這裏。
(c)輸出工作路徑,使得後繼的操作會找到該步驟建立的工具.命令如下:
PATH =/usr/local/cross -gcc/mipsel -linux/bin: $PATH;export PATH

發佈了36 篇原創文章 · 獲贊 0 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章