www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在網(wǎng)上查看了不少資料,參考別人的,在加上一些自己遇到的問(wèn)題結(jié)合的,內(nèi)容直接轉(zhuǎn)載過(guò)來(lái)了,給和我一樣,剛?cè)腴T(mén)ARM的新手的。雖然網(wǎng)上很多現(xiàn)成的,但是自己動(dòng)手做作,還是很好的。編譯環(huán)境:內(nèi)核名稱(chēng):Linux內(nèi)核發(fā)行版

在網(wǎng)上查看了不少資料,參考別人的,在加上一些自己遇到的問(wèn)題結(jié)合的,內(nèi)容直接轉(zhuǎn)載過(guò)來(lái)了,給和我一樣,剛


入門(mén)ARM的新手的。雖然網(wǎng)上很多現(xiàn)成的,但是自己動(dòng)手做作,還是很好的。


編譯環(huán)境:

內(nèi)核名稱(chēng):Linux

內(nèi)核發(fā)行版: 3.3.0-4.fc16.x86_64

內(nèi)核版本:#1 SMP Tue Mar 20 18:05:40 UTC 2012

硬件架構(gòu)名稱(chēng): x86_64

硬件平臺(tái):x86_64

操作系統(tǒng):GNU/Linux

當(dāng)前系統(tǒng)gcc版本號(hào):4.6.3

在Linux中建立整個(gè)ARM交叉編譯環(huán)境的整體過(guò)程為:

1、下載源碼包放在/mnt/hgfs/Document/

2、建立編譯目錄并設(shè)置環(huán)境變量

3、安裝內(nèi)核頭文件

4、安裝二進(jìn)制工具(binutils)

5、建立初始編譯器工具鏈(簡(jiǎn)版gcc)

6、建立glibc庫(kù)

7、建立全套編譯器工具鏈(full gcc)

8、驗(yàn)證

一、下載源碼包

GNU的所有源碼文件都可以到這個(gè)地址下載:http://ftp.gnu.org/gnu/

Linux Kernel源代碼可以去這里下載:http://www.kernel.org

mpc可以去這里下載:http://www.multiprecision.org

下載的源碼包如下:

binutils-2.22.tar

gcc-4.6.3.tar

glibc-2.13.tar

glibc-linuxthreads-2.3.6.tar

glibc-ports-2.13.tar

gmp-5.0.4.tar

linux-3.2.12.tar

mpc-0.9.tar

mpfr-2.4.2.tar.gz

注:mpfr不建議使用3.0.0版本。mpfr-3.0.0有Bug,會(huì)導(dǎo)致gcc編譯不過(guò)。

C 庫(kù)我試用了很多的版本,只有這套組合才能編譯成功

在后面編譯的過(guò)程中會(huì)提示缺少頭文件,去內(nèi)核中找到cp里就可以了。

二、建立編譯目錄并設(shè)置環(huán)境變量


選定自己的工作目錄,如我選擇/opt/embedded作為自己的工作目錄。然后再embedded中建立build-tools、kernel、tools

三個(gè)文件夾。實(shí)例:

root@fedora:/opt/ming# cd /opt/

root@fedora:/opt# mkdir embedded

root@fedora:/opt# cd embedded/

root@fedora:/opt/embedded# mkdir build-tools kernel tools

root@fedora:/opt/embedded# cd build-tools/

root@fedora:/opt/embedded/build-tools# mkdir build-binutils build-boot-gcc build-glibc build-gcc

各文件夾的作用如下:

/opt/embedded:交叉編譯環(huán)境的主目錄



/opt/embedded/build-tools:存放binutils、gcc、glibc等GNU源碼和用來(lái)編譯這些源代碼的目錄



/opt/embedded/kernel:用來(lái)存放Linux內(nèi)核源代碼

/opt/embedded/tools:用來(lái)存放編譯好的交叉編譯工具和庫(kù)文件

/opt/embedded/build-tools/build-binutils:編譯binutils的目錄

/opt/embedded/build-tools/build-boot-gcc:編譯gcc啟動(dòng)部分的目錄

/opt/embedded/build-tools/build-glibc:編譯glibc的目錄

/opt/embedded/build-tools/build-gcc:編譯整個(gè)gcc的目錄



建立好編譯目錄之后便是設(shè)置環(huán)境變量(建議直接在~/.bashrc中修改,注意修改之后要重新運(yùn)行Terminal)。如下:

export PRJROOT=/opt/embedded

export TARGET=arm-linux

export PREFIX=$PRJROOT/tools

export TARGET_PREFIX=$PREFIX/$TARGET

export PATH=$PREFIX/bin:$PATH

各個(gè)環(huán)境變量的意義如下:



PRJROOT:整個(gè)交叉編譯環(huán)境的根目錄

TARGET:目標(biāo)文件對(duì)應(yīng)的architecture,arm-linux表示編譯出來(lái)的target只能在arm architecture中運(yùn)行

PREFIX:目標(biāo)文件夾的路徑前綴

TARGET_PREFIX:目標(biāo)文件夾的路徑前綴路徑

PATH:可執(zhí)行文件路徑,這里主要指定編譯工具等



三、安裝內(nèi)核頭文件

將Linux內(nèi)核源碼解壓至$PRJROOT/kernel目錄,然后建立幾個(gè)文件的符號(hào)鏈接,最后生成version.h文件。實(shí)例:

首先解壓Linux內(nèi)核源文件



root@fedora:/opt/embedded/kernel# cp /mnt/hgfs/Document/linux-3.2.12.tar .

root@fedora:/opt/embedded/kernel# tar -xvf linux-3.2.12.tar

root@fedora:/opt/embedded/kernel# mkdir /opt/embedded/tools/arm-linux

root@fedora:/opt/embedded/kernel# mkdir /opt/embedded/tools/arm-linux/include

root@fedora:/opt/embedded/kernel# ln -s /opt/embedded/kernel/linux-3.2.12/include/linux /opt/embedded/tools/arm-linux/include/linux

root@fedora:/opt/embedded/kernel# ln -s /opt/embedded/kernel/linux-3.2.12/include/asm-generic /opt/embedded/tools/arm-linux/include/asm-generic

root@fedora:/opt/embedded/kernel# ln -s /opt/embedded/kernel/linux-3.2.12/arch/arm/include/asm /opt/embedded/tools/arm-

linux/include/asm (也可能是是asm-arm,示內(nèi)核版本而定)



下面檢查上面創(chuàng)建的符號(hào)鏈接是否正確。實(shí)例:

root@fedora:/opt/embedded/kernel# cd /opt/embedded/tools/arm-linux/include/

root@fedora:/opt/embedded/tools/arm-linux/include# ll

asm -> /opt/embedded/kernel/linux-3.2.12/arch/arm/include/asm/

asm-generic -> /opt/embedded/kernel/linux-3.2.12/include/asm-generic/

linux -> /opt/embedded/kernel/linux-3.2.12/include/linux/

有如上結(jié)果表示符號(hào)鏈接創(chuàng)建正確。

root@fedora:/opt/embedded/kernel/linux-3.2.12#make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig*配置(注

意:arm-linux- 與menuconfig之間有一個(gè)空格)*

//在隨后出現(xiàn)的文本菜單進(jìn)行配置、配置完退出并保存。若要設(shè)置某個(gè)選項(xiàng),可將光標(biāo)定位在該項(xiàng)上,按回車(chē)鍵。對(duì)

于前面有[]或者<>的,可以按空格鍵顯示所包含的子選項(xiàng)。

注意在選項(xiàng)System Types中選擇正確的硬件類(lèi)型。配置完退出并保存(Exit Yes)。


最后生成version.h文件。實(shí)例:

root@fedora:/opt/embedded/kernel/linux-3.2.12# cd /opt/embedded/kernel/linux-3.2.12/

root@fedora:/opt/embedded/kernel/linux-3.2.12# make include/linux/version.h

CHK include/linux/version.h

UPD include/linux/version.h


接著進(jìn)入相應(yīng)目錄查看version.h文件是否建立成功。


注:上述的做法理論上沒(méi)什么問(wèn)題,但實(shí)際操作時(shí),如果用其他版本的linux內(nèi)核可能會(huì)出現(xiàn)頭文件包含不全的情況,

這會(huì)直接導(dǎo)致后面編譯glibc時(shí)出現(xiàn)未定義、未聲明、缺少頭文件(如asm/unistd.h)的錯(cuò)誤。如果可能的話,建議按上

述操作直接copy好用的其他交叉編譯工具鏈中的asm-arm、asm-generic、linux目錄。



四、安裝二進(jìn)制工具(binutils)


Binutils是一些二進(jìn)制工具集合,其中包含了常用的一些命令。首先將binutils-2.22.tar.bz2解壓至build-tools,然后進(jìn)入

build-binutils目錄,配置并編譯binutils,最后使用make install進(jìn)行安裝。實(shí)例:

root@fedora:/opt/embedded/build-tools# cd /opt/embedded/build-tools/

root@fedora:/opt/embedded/build-tools# cp /mnt/hgfs/Document/binutils-2.22.tar.bz2 .

root@fedora:/opt/embedded/build-tools# tar -xjf binutils-2.22.tar.bz2

root@fedora:/opt/embedded/build-tools# cd build-binutils/

root@fedora:/opt/embedded/build-tools/build-binutils#../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX

root@fedora:/opt/embedded/build-tools/build-binutils# make

root@fedora:/opt/embedded/build-tools/build-binutils# make install



完成后,去$PREFIX中檢查一下生成的工具。實(shí)例:

root@fedora:/opt/embedded/build-tools/build-binutils# cd /opt/embedded/tools/bin

root@fedora:/opt/embedded/tools/bin# ll

有如下文件:

arm-linux-addr2line*

arm-linux-ar*

arm-linux-as*

arm-linux-c++filt*

arm-linux-elfedit*

arm-linux-gprof*

arm-linux-ld*

arm-linux-ld.bfd*

arm-linux-nm*

arm-linux-objcopy*

arm-linux-objdump*

arm-linux-ranlib*

arm-linux-readelf*

arm-linux-size*

arm-linux-strings*

arm-linux-strip*



這些生成的文件的作用分別為:

arm-linux-addr2line:將你要找的地址轉(zhuǎn)成文件和行號(hào),它要使用 debug 信息

arm-linux-ar:產(chǎn)生、修改和解開(kāi)一個(gè)存檔文件

arm-linux-as:GNU的匯編器

arm-linux-c++filt:C++ 和 java 中有一種重載函數(shù),所用的重載函數(shù)最后會(huì)被編譯轉(zhuǎn)化成匯編的標(biāo),c++filt 就是實(shí)現(xiàn)

這種反向的轉(zhuǎn)化,根據(jù)標(biāo)號(hào)得到函數(shù)名

arm-linux-elfedit:用途暫時(shí)未知

arm-linux-gprof:GNU匯編器預(yù)編譯器

arm-linux-ld:GNU的連接器

arm-linux-ld.bfd:用途暫時(shí)未知

arm-linux-nm:列出目標(biāo)文件的符號(hào)和對(duì)應(yīng)的地址

arm-linux-objcopy:將某種格式的目標(biāo)文件轉(zhuǎn)化成另外格式的目標(biāo)文件

arm-linux-objdump:顯示目標(biāo)文件的信息

arm-linux-ranlib:為一個(gè)存檔文件產(chǎn)生一個(gè)索引,并將這個(gè)索引存入存檔文件中

arm-linux-readelf:顯示 elf 格式的目標(biāo)文件的信息

arm-linux-size:顯示目標(biāo)文件各個(gè)節(jié)的大小和目標(biāo)文件的大小

arm-linux-strings:打印出目標(biāo)文件中可以打印的字符串,有個(gè)默認(rèn)的長(zhǎng)度,為4

arm-linux-strip:剝掉目標(biāo)文件的所有的符號(hào)信息



注:編譯過(guò)程中有可能出現(xiàn)的錯(cuò)誤:

gcc -DHAVE_CONFIG_H -I.-I. -I. -I../bfd -I./config -I./../include -I./.. -I./../bfd -

DLOCALEDIR=""/tools/cross/share/locale""-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -MT tc-

arm.o -MD -MP -MF .deps/tc-arm.Tpo -c -o tc-arm.o `test -f 'config/tc-arm.c' || echo './'`config/tc-arm.c

cc1: warnings being treated as errors

config/tc-arm.c: In function ‘make_mapping_symbol’:

config/tc-arm.c:2489: 警告:if 語(yǔ)句體為空

make[4]: *** [tc-arm.o] 錯(cuò)誤 1// 排錯(cuò)要充分利用報(bào)錯(cuò)信息。

make[4]: Leaving directory `/root/build/binutils-2.20_cross/gas'

make[3]: *** [all-recursive] 錯(cuò)誤 1

make[3]: Leaving directory `/root/build/binutils-2.20_cross/gas'

make[2]: *** [all] 錯(cuò)誤 2

make[2]: Leaving directory `/root/build/binutils-2.20_cross/gas'

make[1]: *** [all-gas] 錯(cuò)誤 2

make[1]: Leaving directory `/root/build/binutils-2.20_cross'

make: *** [all] 錯(cuò)誤 2

解決方案:

1)網(wǎng)上說(shuō)的在tc-arm.c中加個(gè)括號(hào),沒(méi)研究,可能好用;

2)在make這一步中,可能會(huì)在編譯../binutils-2.22/gas/config/tc-arm.c出現(xiàn)gcc把警告當(dāng)成錯(cuò)誤的錯(cuò)誤,其原因在于編譯

該文件時(shí)使用了-Werror選項(xiàng),解決辦法是修改../binutils-2.22/gas/configure文件第10624行,把

ERROR_ON_WARNING=yes改為ERROR_ON_WARNING=no,保存退出,重新執(zhí)行make即可。

3)在配置時(shí),關(guān)閉Warning報(bào)錯(cuò),也可以編譯成功:(我用的是這種)

[root@localhost binutils-2.20_cross_no_2]# ./configure --target=arm-linux --disable-werror && make

參考:http://hi.baidu.com/thinke365/bl ... 1f095af819b853.html



五、建立初始編譯器(簡(jiǎn)版 gcc)


Gcc是最主要的編譯器。首先將gcc-4.6.3.ta解壓至build-tools,然后將gmp-5.0.2.tar.bz2、mpfr-2.4.2.tar.gz、mpc-0.9.tar.gz

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉