資料介紹
交叉編譯環(huán)境介紹
交叉編譯是嵌入式開發(fā)過(guò)程中的一項(xiàng)重要技術(shù),它的主要特征是某機(jī)器中執(zhí)行的程序代碼不是在本機(jī)編譯生成,而是由另一臺(tái)機(jī)器編譯生成,一般把前者稱為目標(biāo)機(jī),后者稱為主機(jī)。采用交叉編譯的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過(guò)程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。
linux下的交叉編譯環(huán)境重要包括以下幾個(gè)部分:
針對(duì)目標(biāo)系統(tǒng)的編譯器gcc
針對(duì)目標(biāo)系統(tǒng)的二進(jìn)制工具binutils
目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫(kù)glibc
目標(biāo)系統(tǒng)的linux內(nèi)核頭文件
交叉編譯環(huán)境的建立步驟
下載源代碼
下載包括binutils、gcc、glibc及l(fā)inux內(nèi)核的源代碼(需要注意的是,glibc和內(nèi)核源代碼的版本必須與目標(biāo)機(jī)上實(shí)際使用的版本保持一致),并設(shè)定shell變量PREFIX指定可執(zhí)行程序的安裝路徑。
編譯binutils
首先運(yùn)行configure文件,并使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類型,然后執(zhí)行make install。
配置linux內(nèi)核頭文件
首先執(zhí)行make mrproper進(jìn)行清理工作,然后執(zhí)行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)進(jìn)行配置(注意,一定要在命令行中使用ARCH=arm指定cpu架構(gòu),因?yàn)槿笔〖軜?gòu)為主機(jī)的cpu架構(gòu)),這一步需要根據(jù)目標(biāo)機(jī)的實(shí)際情況進(jìn)行詳細(xì)的配置,筆者進(jìn)行的實(shí)驗(yàn)中目標(biāo)機(jī)為HP的ipaq-hp3630 PDA,因而設(shè)置system type為SA11X0,SA11X0 Implementations中選擇Compaq iPAQ H3600/H3700。
配置完成之后,需要將內(nèi)核頭文件拷貝到安裝目錄: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux
第一次編譯gcc
首先運(yùn)行configure文件,使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類型,并使用--disable-threads、--disable-shared、--enable-languages=c參數(shù),然后執(zhí)行make install。這一步將生成一個(gè)最簡(jiǎn)的gcc。由于編譯整個(gè)gcc是需要目標(biāo)機(jī)的glibc庫(kù)的,它現(xiàn)在還不存在,因此需要首先生成一個(gè)最簡(jiǎn)的gcc,它只需要具備編譯目標(biāo)機(jī)glibc庫(kù)的能力即可。
交叉編譯glibc
這一步驟生成的代碼是針對(duì)目標(biāo)機(jī)cpu的,因此它屬于一個(gè)交叉編譯過(guò)程。該過(guò)程要用到linux內(nèi)核頭文件,默認(rèn)路徑為$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一個(gè)名為sys-linux的軟連接,使其內(nèi)核頭文件所在的include目錄;或者,也可以在接下來(lái)要執(zhí)行的configure命令中使用--with-headers參數(shù)指定linux內(nèi)核頭文件的實(shí)際路徑。
configure的運(yùn)行參數(shù)設(shè)置如下(因?yàn)槭墙徊婢幾g,所以要將編譯器變量CC設(shè)為arm-linux-gcc):
CC=arm-linux-gcc 。/configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons
最后,按以上配置執(zhí)行configure和make install,glibc的交叉編譯過(guò)程就算完成了,這里需要指出的是,glibc的安裝路徑設(shè)置為$PREFIXARCH=arm/arm-linux,如果此處設(shè)置不當(dāng),第二次編譯gcc時(shí)可能找不到glibc的頭文件和庫(kù)。
第二次編譯gcc
運(yùn)行configure,參數(shù)設(shè)置為--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++。
運(yùn)行make install。
到此為止整個(gè)交叉編譯環(huán)境就完全生成了。
幾點(diǎn)注意事項(xiàng)
第一點(diǎn)、在第一次編譯gcc的時(shí)候可能會(huì)出現(xiàn)找不到stdio.h的錯(cuò)誤,解決辦法是修改gcc/config/arm/t-linux文件,在TARGET_LIBGCC2_CFLAGS變量的設(shè)定中增加-Dinhibit_libc和-D__gthr_posix_h。
第二點(diǎn)、對(duì)與2.3.2版本的glibc庫(kù),編譯linuxthread/sysdeps/pthread/sigaction.c時(shí)可能出錯(cuò),需要通過(guò)補(bǔ)丁glibc-2.3.2-arm.patch解決:執(zhí)行patch -p1 《 glibc-2.3.2-arm.patch
第三點(diǎn)、第二次編譯gcc時(shí)可能會(huì)出現(xiàn)libc.so的錯(cuò)誤,這是需要利用文本編輯器手動(dòng)修改libc.so。
?
交叉編譯是嵌入式開發(fā)過(guò)程中的一項(xiàng)重要技術(shù),它的主要特征是某機(jī)器中執(zhí)行的程序代碼不是在本機(jī)編譯生成,而是由另一臺(tái)機(jī)器編譯生成,一般把前者稱為目標(biāo)機(jī),后者稱為主機(jī)。采用交叉編譯的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過(guò)程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。
linux下的交叉編譯環(huán)境重要包括以下幾個(gè)部分:
針對(duì)目標(biāo)系統(tǒng)的編譯器gcc
針對(duì)目標(biāo)系統(tǒng)的二進(jìn)制工具binutils
目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫(kù)glibc
目標(biāo)系統(tǒng)的linux內(nèi)核頭文件
交叉編譯環(huán)境的建立步驟
下載源代碼
下載包括binutils、gcc、glibc及l(fā)inux內(nèi)核的源代碼(需要注意的是,glibc和內(nèi)核源代碼的版本必須與目標(biāo)機(jī)上實(shí)際使用的版本保持一致),并設(shè)定shell變量PREFIX指定可執(zhí)行程序的安裝路徑。
編譯binutils
首先運(yùn)行configure文件,并使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類型,然后執(zhí)行make install。
配置linux內(nèi)核頭文件
首先執(zhí)行make mrproper進(jìn)行清理工作,然后執(zhí)行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)進(jìn)行配置(注意,一定要在命令行中使用ARCH=arm指定cpu架構(gòu),因?yàn)槿笔〖軜?gòu)為主機(jī)的cpu架構(gòu)),這一步需要根據(jù)目標(biāo)機(jī)的實(shí)際情況進(jìn)行詳細(xì)的配置,筆者進(jìn)行的實(shí)驗(yàn)中目標(biāo)機(jī)為HP的ipaq-hp3630 PDA,因而設(shè)置system type為SA11X0,SA11X0 Implementations中選擇Compaq iPAQ H3600/H3700。
配置完成之后,需要將內(nèi)核頭文件拷貝到安裝目錄: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux
第一次編譯gcc
首先運(yùn)行configure文件,使用--prefix=$PREFIX參數(shù)指定安裝路徑,使用--target=arm-linux參數(shù)指定目標(biāo)機(jī)類型,并使用--disable-threads、--disable-shared、--enable-languages=c參數(shù),然后執(zhí)行make install。這一步將生成一個(gè)最簡(jiǎn)的gcc。由于編譯整個(gè)gcc是需要目標(biāo)機(jī)的glibc庫(kù)的,它現(xiàn)在還不存在,因此需要首先生成一個(gè)最簡(jiǎn)的gcc,它只需要具備編譯目標(biāo)機(jī)glibc庫(kù)的能力即可。
交叉編譯glibc
這一步驟生成的代碼是針對(duì)目標(biāo)機(jī)cpu的,因此它屬于一個(gè)交叉編譯過(guò)程。該過(guò)程要用到linux內(nèi)核頭文件,默認(rèn)路徑為$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一個(gè)名為sys-linux的軟連接,使其內(nèi)核頭文件所在的include目錄;或者,也可以在接下來(lái)要執(zhí)行的configure命令中使用--with-headers參數(shù)指定linux內(nèi)核頭文件的實(shí)際路徑。
configure的運(yùn)行參數(shù)設(shè)置如下(因?yàn)槭墙徊婢幾g,所以要將編譯器變量CC設(shè)為arm-linux-gcc):
CC=arm-linux-gcc 。/configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons
最后,按以上配置執(zhí)行configure和make install,glibc的交叉編譯過(guò)程就算完成了,這里需要指出的是,glibc的安裝路徑設(shè)置為$PREFIXARCH=arm/arm-linux,如果此處設(shè)置不當(dāng),第二次編譯gcc時(shí)可能找不到glibc的頭文件和庫(kù)。
第二次編譯gcc
運(yùn)行configure,參數(shù)設(shè)置為--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++。
運(yùn)行make install。
到此為止整個(gè)交叉編譯環(huán)境就完全生成了。
幾點(diǎn)注意事項(xiàng)
第一點(diǎn)、在第一次編譯gcc的時(shí)候可能會(huì)出現(xiàn)找不到stdio.h的錯(cuò)誤,解決辦法是修改gcc/config/arm/t-linux文件,在TARGET_LIBGCC2_CFLAGS變量的設(shè)定中增加-Dinhibit_libc和-D__gthr_posix_h。
第二點(diǎn)、對(duì)與2.3.2版本的glibc庫(kù),編譯linuxthread/sysdeps/pthread/sigaction.c時(shí)可能出錯(cuò),需要通過(guò)補(bǔ)丁glibc-2.3.2-arm.patch解決:執(zhí)行patch -p1 《 glibc-2.3.2-arm.patch
第三點(diǎn)、第二次編譯gcc時(shí)可能會(huì)出現(xiàn)libc.so的錯(cuò)誤,這是需要利用文本編輯器手動(dòng)修改libc.so。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于ARM-Linux指紋識(shí)別系統(tǒng)的設(shè)計(jì)
- linux4.1.15交叉編譯鏈描述及使用方法
- ARM-Linux開發(fā)與MCU開發(fā)的各自優(yōu)勢(shì)?
- 3568編譯環(huán)境搭建
- ARM-Linux對(duì)比單片機(jī)的開發(fā)異同,以及學(xué)習(xí)路線介紹
- 嵌入式Linux開發(fā)環(huán)境搭建-3-安裝交叉編譯工具鏈
- 嵌入式Linux開發(fā)環(huán)境搭建-(4)安裝交叉編譯工具鏈
- ARM-Linux開發(fā)與MCU開發(fā)有何不同?上篇
- Win7如何安裝交叉編譯環(huán)境 11次下載
- Linux ARM和Linux單片機(jī)開發(fā)有哪些差異
- ARM-Linux指紋識(shí)別系統(tǒng)的設(shè)計(jì) 13次下載
- 關(guān)于ARM-Linux平臺(tái)下GPS信號(hào)的采集探究 1次下載
- 嵌入式交叉編譯環(huán)境的搭建解析 1次下載
- 基于ARM-Linux的1553B仿真測(cè)試前端系統(tǒng) 11次下載
- 基于嵌入式Linux的MapInfo格式地圖顯示
- linux開發(fā)板如何編譯curl 124次閱讀
- 3562-Qt工程編譯說(shuō)明 319次閱讀
- 如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序 1460次閱讀
- ARM-Linux開發(fā)和MCU開發(fā)的不同點(diǎn) 800次閱讀
- ARM-Linux開發(fā)和MCU開發(fā)的不同點(diǎn) 633次閱讀
- QT如何配置交叉編譯工具? 2942次閱讀
- 交叉編譯器安裝教程 3269次閱讀
- ARM-Linux應(yīng)用開發(fā)和單片機(jī)開發(fā)的不同 2058次閱讀
- Prelink的交叉編譯和使用詳解 3371次閱讀
- 以Arm-Linux為平臺(tái)的智能家居控制系統(tǒng)的設(shè)計(jì)詳解 1854次閱讀
- Xilinx交叉編譯鏈的安裝步驟和驗(yàn)證 3113次閱讀
- 交叉編譯工具鏈的命名規(guī)則 7090次閱讀
- 什么是交叉編譯?為何要有交叉編譯 3.7w次閱讀
- Zynq交叉編譯環(huán)境鏈的建立與C程序編寫 4701次閱讀
- 編譯環(huán)境和交叉編譯環(huán)境的搭建 1355次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1490次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費(fèi)
- 6基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
- 7藍(lán)牙設(shè)備在嵌入式領(lǐng)域的廣泛應(yīng)用
- 0.63 MB | 3次下載 | 免費(fèi)
- 89天練會(huì)電子電路識(shí)圖
- 5.91 MB | 3次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多