<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建之:嵌入式開(kāi)發(fā)環(huán)境的搭建

          嵌入式Linux開(kāi)發(fā)環(huán)境的搭建之:嵌入式開(kāi)發(fā)環(huán)境的搭建

          作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏


          本文引用地址:http://www.ex-cimer.com/article/257141.htm

          5.1嵌入式開(kāi)發(fā)環(huán)境的搭建

          5.1.1嵌入式環(huán)境的搭建

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          的概念在第4章中已經(jīng)詳細(xì)講述過(guò),搭建環(huán)境是嵌入式開(kāi)發(fā)的第一步,也是必備的一步。搭建交叉編譯環(huán)境的方法很多,不同的體系結(jié)構(gòu)、不同的操作內(nèi)容甚至是不同版本的內(nèi)核,都會(huì)用到不同的交叉編譯器,而且,有些交叉編譯器經(jīng)常會(huì)有部分的bug,這都會(huì)導(dǎo)致最后的代碼無(wú)法正常地運(yùn)行。因此,選擇合適的交叉編譯器對(duì)于嵌入式開(kāi)發(fā)是非常重要的。


          交叉編譯器完整的安裝一般涉及多個(gè)軟件的安裝(讀者可以從ftp://gcc.gnu.org/pub/下載),包括binutils、gcc、glibc等軟件。其中,binutils主要用于生成一些輔助工具,如objdump、as、ld等;gcc是用來(lái)生成交叉編譯器的,主要生成arm-linux-gcc交叉編譯工具(應(yīng)該說(shuō),生成此工具后已經(jīng)搭建起了交叉編譯環(huán)境,可以編譯Linux內(nèi)核了,但由于沒(méi)有提供標(biāo)準(zhǔn)用戶函數(shù)庫(kù),用戶程序還無(wú)法編譯);glibc主要是提供用戶程序所使用的一些基本的函數(shù)庫(kù)。這樣,交叉編譯環(huán)境就完全搭建起來(lái)了。


          上面所述的搭建交叉編譯環(huán)境比較復(fù)雜,很多步驟都涉及對(duì)硬件平臺(tái)的選擇。因此,現(xiàn)在嵌入式平臺(tái)提供廠商一般會(huì)提供在該平臺(tái)上測(cè)試通過(guò)的交叉編譯器,而且很多公司把以上安裝步驟全部寫入腳本文件或者以發(fā)行包的形式提供,這樣就大大方便了用戶的使用。如優(yōu)龍的FS2410開(kāi)發(fā)光盤里就附帶了2.95.3和3.3.2兩個(gè)版本的交叉編譯器,其中前一個(gè)版本是用于編譯Linux2.4內(nèi)核的,而后一個(gè)版本是用于編譯Linux2.6版本內(nèi)核的。由于這是廠商測(cè)試通過(guò)的編譯器,因此可靠性會(huì)比較高,而且與開(kāi)發(fā)板能夠很好地吻合。所以推薦初學(xué)者直接使用廠商提供的編譯器。當(dāng)然,由于時(shí)間滯后的原因,這個(gè)編譯器往往不是最新的版本,若需要更新時(shí)希望讀者另外查找相關(guān)資料學(xué)習(xí)。本書(shū)就以優(yōu)龍自帶的cross-3.3.2為例進(jìn)行講解(具體的名稱不同廠商可能會(huì)有區(qū)別)。


          安裝交叉編譯器的具體步驟在第2章的實(shí)驗(yàn)二中已經(jīng)進(jìn)行了詳細(xì)地講解了,在此僅回憶關(guān)鍵步驟,對(duì)于細(xì)節(jié)請(qǐng)讀者參見(jiàn)第2章的實(shí)驗(yàn)二。

          在/usr/local/arm下解壓cross-3.3.2.bar.bz2。


          [root@localhostarm]#tar–jxvfcross-3.3.2.bar.bz2

          [root@localhostarm]#ls

          3.3.2cross-3.3.2.tar.bz2

          [root@localhostarm]#cd./3.3.2

          [root@localhostarm]#ls

          arm-linuxbinetcincludeinfoliblibexecmansbinshareVERSIONS

          [root@localhostbin]#whicharm-linux*

          /usr/local/arm/3.3.2/bin/arm-linux-addr2line

          /usr/local/arm/3.3.2/bin/arm-linux-ar

          /usr/local/arm/3.3.2/bin/arm-linux-as

          /usr/local/arm/3.3.2/bin/arm-linux-c++

          /usr/local/arm/3.3.2/bin/arm-linux-c++filt

          /usr/local/arm/3.3.2/bin/arm-linux-cpp

          /usr/local/arm/3.3.2/bin/arm-linux-g++

          /usr/local/arm/3.3.2/bin/arm-linux-gcc

          /usr/local/arm/3.3.2/bin/arm-linux-gcc-3.3.2

          /usr/local/arm/3.3.2/bin/arm-linux-gccbug

          /usr/local/arm/3.3.2/bin/arm-linux-gcov

          /usr/local/arm/3.3.2/bin/arm-linux-ld

          /usr/local/arm/3.3.2/bin/arm-linux-nm

          /usr/local/arm/3.3.2/bin/arm-linux-objcopy

          /usr/local/arm/3.3.2/bin/arm-linux-objdump

          /usr/local/arm/3.3.2/bin/arm-linux-ranlib

          /usr/local/arm/3.3.2/bin/arm-linux-readelf

          /usr/local/arm/3.3.2/bin/arm-linux-size

          /usr/local/arm/3.3.2/bin/arm-linux-strings

          /usr/local/arm/3.3.2/bin/arm-linux-strip


          可以看到,在/usr/local/arm/3.3.2/bin/下已經(jīng)安裝了很多交叉編譯工具。用戶可以查看arm文件夾下的VERSIONS文件,顯示如下:


          Versions

          gcc-3.3.2

          glibc-2.3.2

          binutils-head

          Toolchainbinutilsconfiguration:

          ../binutils-head/configure…

          Toolchainglibcconfiguration:

          ../glibc-2.3.2/configure…

          Toolchaingccconfiguration

          ../gcc-3.3.2/configure…


          可以看到,這個(gè)交叉編譯工具確實(shí)集成了binutils、gcc、glibc這幾個(gè)軟件,而每個(gè)軟件也都有比較復(fù)雜的配置信息,讀者可以查看VERSIONS文件了解相關(guān)信息。

          linux相關(guān)文章:linux教程



          上一頁(yè) 1 2 3 4 5 6 7 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();