資源描述:
《搭建Linux交叉編譯開發(fā)環(huán)境.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第二章搭建Linux交叉編譯開發(fā)環(huán)境Crosscompilingenvironment什么是交叉編譯呢?簡單地說,就是在一個(gè)平臺上生成另一個(gè)平臺上的可執(zhí)行代碼。這里需要注意的是所謂平臺,實(shí)際上包含兩個(gè)概念:體系結(jié)構(gòu)(Architecture)和操作系統(tǒng)(OperatingSystem)。同一個(gè)體系結(jié)構(gòu)可以運(yùn)行不同的操作系統(tǒng);同一個(gè)操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運(yùn)行。2.1什么是交叉編譯2.2.1編譯工具鏈以下是一個(gè)基于RedHatlinux的交叉編譯環(huán)境的建立過程。整個(gè)編譯過程包括:下載源文件、補(bǔ)丁和建立編譯的目錄;建立內(nèi)核頭文件;建立二進(jìn)制工具(binutils
2、);建立初始編譯器(bootstrapgcc);建立c庫(glibc);建立全套編譯器(fullgcc)。2.2建立交叉編譯開發(fā)工具鏈需求:下載源文件、補(bǔ)丁和建立編譯的目錄a,下載:binutils-2.11.2.tar,diff-2.4.9-ac9-rmk1-np1,gcc-2.95.3.tar,glibc-2.2.4.tar,glibc-linuxthreads-2.2.4.tar,linux-2.4.9.tar,patch-2.4.9-ac9,patch-2.4.9-ac9-rmk1,patch-2.4.9-ac9-rmk2b,建目錄:將所有的源代碼放到/us
3、r/tmp/下;交叉編譯器將安裝在/opt/host/armv5/2.2建立交叉編譯開發(fā)工具鏈建立整個(gè)toolchain的步驟2.2建立交叉編譯開發(fā)工具鏈(1)Installingbinutils#cd/tmp#tarzxvfbinutils-2.11.2.tar.gz#cdbinutils-2.11.2#./configure--target=armv5-unknown-linux--prefix=/opt/host/armv5#make#makeinstall2.2建立交叉編譯開發(fā)工具鏈注意:這樣就在/opt/host/armv5/bin下產(chǎn)生了binutils
4、,它們的作用如下:addr2line——將要找的地址轉(zhuǎn)成文件和行號,它要使用debug信息。ar——產(chǎn)生、修改和解開一個(gè)存檔文件。as——gnu的匯編器。2.2建立交叉編譯開發(fā)工具鏈c++filt——C++和java中有一種重載函數(shù),所用的重載函數(shù)最后會被編譯轉(zhuǎn)化成匯編的標(biāo)號,c++filt就是實(shí)現(xiàn)這種反向的轉(zhuǎn)化,根據(jù)標(biāo)號得到函數(shù)名。gasp——gnu匯編器預(yù)編譯器。2.2建立交叉編譯開發(fā)工具鏈ld——gnu的連接器。nm——列出目標(biāo)文件的符號和對應(yīng)的地址。objcopy——將某種格式的目標(biāo)文件轉(zhuǎn)化成另外格式的目標(biāo)文件。objdump——顯示目標(biāo)文件的信息。2.2建
5、立交叉編譯開發(fā)工具鏈ranlib——為一個(gè)存檔文件產(chǎn)生一個(gè)索引,并將這個(gè)索引存入存檔文件中。readelf——顯示elf格式的目標(biāo)文件的信息。size——顯示目標(biāo)文件各個(gè)節(jié)的大小和目標(biāo)文件的大小。strings——打印出目標(biāo)文件中可以打印的字符串,有個(gè)默認(rèn)的長度,為4。strip——?jiǎng)兊裟繕?biāo)文件的所有的符號信息。2.2建立交叉編譯開發(fā)工具鏈(2)輸出工具的路徑,使得以后的編譯工作能看到這些工具:#exportPATH=/opt/host/armv5/bin:$PATH2.2建立交叉編譯開發(fā)工具鏈(3)建立編譯需要使用的頭文件#cd/tmp#tarzxvflinux-
6、2.4.9.tar.gz#mvlinuxlinux-2.4.9-ac9-rmk1-np1#mvpatch-2.4.9-ac9.gzpatch-2.4.9-ac9-rmk1.bz2diff-2.4.9-ac9-rmk1-np1.gz./linux-2.4.9-ac9-rmk1-np12.2建立交叉編譯開發(fā)工具鏈#cdlinux-2.4.9-ac9-rmk1-np1:kernel2.4.9#gzip-cdpatch-2.4.9-ac9.gz
7、patch-p1:AlanCoxpatch#bzip2-cdpatch-2.4.9-ac9-rmk1.bz2
8、patch-p1:R
9、ussellKingpatch#gzip-cddiff-2.4.9-ac9-rmk1-np1.gz
10、patch-p1:NicholasPitrepatch#makemenuconfig:DotocreateARMheaderfiles.Whenyouexit,selectsaveitem.#makedep:Alsodotocreateheaderfiles.#cd/opt/host/armv4l/armv4l-unknown-linux#cdinclude:Ifnotexisting,makeincludedirectory.#cp-a/usr/include/