製作mipsel-linux交叉編譯工具1
1 前言 在嵌入式開發中,MIPs處理器是常見的幾中處理器型別之一。另一方面,Linux是開源軟體,應用範圍很廣, 因其對包括MIPS在內的多種嵌入式處理器架構的良好支援. 因此在嵌入式應用也.也大量採用Linux。在嵌入式開發過程中,很容易獲得運行於x86架構PC上的Linux,並可使用其上的豐富的工具。gcc是Linux中一個很著名的C編譯器,在編譯Linux核心時,就要用到gcc。在PC機的Linux系統中用自身的gcc重新編譯Linux核心和其它應用是容易。而嵌入式應用是要求在MIPs架構的平臺上佈署Linux系統和其上的應用,但在開發的過程中.獲得運行於MIPS架構的Linux系統的開發環境幾乎是不可能的。
2 構造系統介紹 這是一臺執行Linux的PC,因整個過程要完成大量的編譯工作,因此推薦使用有較高運算能力的x86相容PC.如Intel的P4系統。同時,編譯過程會需要1G左右的硬碟空間。 在這個系統上裝好RedHat Linux和gcc,以下是實驗所用的構造系統的版本資訊.供參考:
4 Linux標頭檔案準備 這些標頭檔案在編譯gcc時要用到,正確構造這些檔案,很重要。a)將HOST的Linux的/usr/include拷貝過來cp -r /usr/include /home/crosstool/tmp/b)去除其中的兩個目錄rm -r -f /home/crosstool/tmp/include/asmrm -r -f /home/crosstool/tmp/include/linuxc)解開linux原始碼包cd/home/crosstool/tmptar xvfz ../linux2.4.tar.gzd)按Target要求完成核心配置.主要是選擇正確的CPU型別和核心部件.使這個核心的配置涵蓋目標系統的要求。cd/home/crosstool/tmp/linuxmake cleanmake menuconfig……. 參照有關Linux核心配置的說明完成正確的配置過程。make depe)將配置好的核心的兩個目錄取出cp -dR include/linux/home/crosstool/tmp/include/cp -dR include/asm-mips /home/crosstool/tmp/include/asm至此,標頭檔案已準備好了,可用以下命令檢視:ls /home/crosstool/tmp/include
5 編譯binutils 這裡生成一些binary格式的處理工具,如mipsel-linux-ld、mipsel-linux-objdump等。(a)解壓縮,得到原始碼cd /home/crosstool/tmptar 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 3mkdir mipsel-linuxcd mipsel-linux../configure --prefix=/usr/locallcross-gcc/mipsel-linux --target=mipsel-linuxmakemake 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