嵌入式操作系統(tǒng)實(shí)驗(yàn)一建立交叉編譯環(huán)境.doc_第1頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)一建立交叉編譯環(huán)境.doc_第2頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)一建立交叉編譯環(huán)境.doc_第3頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)一建立交叉編譯環(huán)境.doc_第4頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)一建立交叉編譯環(huán)境.doc_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告姓名王威學(xué)號(hào)SA12226437所在班級(jí)系統(tǒng)芯片實(shí)驗(yàn)名稱實(shí)驗(yàn)一隊(duì)友:張圣 苗亞實(shí)驗(yàn)內(nèi)容1、 準(zhǔn)備工作工作:安裝virtualbox虛擬機(jī)工具,并安裝ubuntu10.10系統(tǒng)、增強(qiáng)型工具,實(shí)現(xiàn)共享文件夾的自動(dòng)掛載。2、 利用crosstool提供的腳本安裝和相關(guān)資源編譯面向的ARM的GCC工具。詳細(xì)內(nèi)容1:安裝虛擬機(jī)軟件和虛擬機(jī)時(shí)要完成的主要步驟有:安裝virtualbox,建立一臺(tái)虛擬機(jī),分配內(nèi)存和硬盤(pán),指定共享文件夾(主機(jī)和虛擬機(jī)可共同操作),指定操作系統(tǒng)鏡像文件路徑(相當(dāng)于光盤(pán),第一次啟動(dòng)時(shí)安裝),安裝虛擬操作系統(tǒng),安裝增強(qiáng)工具包,實(shí)現(xiàn)共享文件夾的自動(dòng)掛載。 有幾點(diǎn)需要注意: 1、虛擬硬盤(pán)盡量分配大一些,之后再擴(kuò)就比較麻煩。2、共享文件夾不要有中文路徑,不然掛載后看不到中文名稱文件。3、安裝操作系統(tǒng)時(shí),不能斷網(wǎng),需要下載各種資源,不然會(huì)異常。詳細(xì)內(nèi)容2:安裝gcc-4.1替換操作系統(tǒng)中的gcc-4.4.5,用它編譯交叉編譯器gcc-3.4.5和庫(kù)文件glibc-2.3.2、gdb-6.5。為了完成這樣的目標(biāo),我們需要安裝與腳本相關(guān)的工具,需要修改crosstool中的配置文件arm.dat以指定編譯的目標(biāo)位arm-linux。需要修改crosstool中的腳本文件,指定編譯的源文件和目的文件夾(后來(lái)建立),指定配置文件為gcc-3.4.5-glibc-2.3.2.dat,在該配置文件中,指定了交叉編譯器和調(diào)試器、C庫(kù)的版本。最后運(yùn)行腳本,實(shí)現(xiàn)了對(duì)GCC工具包的安裝,包括gcc預(yù)處理器、匯編器、編譯器、鏈接器、調(diào)試器、反匯編工具等等。整個(gè)實(shí)驗(yàn)中我們需要的資源是crosstool-0.43.tar、gdb-6.5.tar、linux-2.6.8.tar,將放置在共享文件夾的crosstool工具拷貝到主文件夾下并解壓,將gbd和linux文件拷貝到crosstool文件夾,拷貝linux-2.6.8.tar是因?yàn)榫幾g時(shí)需要內(nèi)核文件。實(shí)驗(yàn)步驟實(shí)驗(yàn)準(zhǔn)備:在實(shí)驗(yàn)準(zhǔn)備中,在安裝完增強(qiáng)工具包(安裝vmware tools實(shí)現(xiàn)與XP文件共享)并重啟之后,需要實(shí)現(xiàn)對(duì)共享文件夾的自動(dòng)掛載,只需要修改etc目錄中的配置文件rc.local,rc.local是很多l(xiāng)inux系統(tǒng)管理員的偏愛(ài),因?yàn)榉彩切枰S系統(tǒng)自動(dòng)啟動(dòng)的服務(wù)、程序等,都可以放在里面。$sudo mkdir /mnt/share$sudo mount -t vboxsf embedded /mnt/shared上面三句話實(shí)現(xiàn)了將共享文件夾embeded掛載到了share上。gedit /etc/rc.local將第2句命令添加在exit之前,實(shí)現(xiàn)了自動(dòng)掛載功能。實(shí)驗(yàn)一一、搭建編譯環(huán)境1、安裝于腳本運(yùn)行相關(guān)及其他的工具bison、flex 、build-essential、patch 、libncurses5-dev。$sudo apt-get install bison flex build-essential patch libncurses5-dev運(yùn)行如下:相關(guān):Linux下有一個(gè)SUDO命令,使得普通用戶能夠行使超級(jí)用戶的部份權(quán)利,在/etc/sudoers中設(shè)置了可執(zhí)行sudo指令的用戶。若其未經(jīng)授權(quán)的用戶企圖使用sudo,則會(huì)發(fā)出警告的郵件給管理員。用戶使用sudo時(shí),必須先輸入密碼,之后有5分鐘的有效期限,超過(guò)期限則必須重新輸入密碼。apt-get 一個(gè)下載的命令參數(shù)有install 安裝 update 更新 remove 移除 check 檢查。比如: sudo apt-get install samba-3.0-7 下載并安裝一個(gè)名字為samba-3.0-7的程序在UNIX早期時(shí)代,編寫(xiě)一個(gè)編譯器是一件非常耗時(shí)的工作。人們?yōu)榱撕?jiǎn)化開(kāi)發(fā)過(guò)程,開(kāi)發(fā)了Lex和YACC程序來(lái)解決第一個(gè)任務(wù),根據(jù)用戶描述的語(yǔ)言,生成能夠解決問(wèn)題的C/C+語(yǔ)言代碼,供開(kāi)發(fā)者使用。將源代碼文件分解為各種詞匯(Lex);找到這些詞匯的組成方式(YACC);GNU軟件協(xié)會(huì)開(kāi)發(fā)了Flex和BISON,其功能與LEX和YACC基本兼容,并且在Lex和YACC提供的功能的基礎(chǔ)上進(jìn)行了各種擴(kuò)展。FLex能夠?qū)⑤斎霐?shù)據(jù)流分類為各類詞匯,為后來(lái)的語(yǔ)法分析做準(zhǔn)備Bison該文件本質(zhì)上就是一個(gè)C語(yǔ)言的源代碼,作用就是對(duì)輸入文件進(jìn)行語(yǔ)法分析。GNU Bison在Linux下的安裝非常簡(jiǎn)單。你可以去它的官方網(wǎng)站上下載安裝包自行安裝,ubuntu系統(tǒng)下更簡(jiǎn)單的方法同樣是直接在命令行敲入命令實(shí)現(xiàn)。Ubuntu缺省情況下,并沒(méi)有提供C/C的編譯環(huán)境,因此還需要手動(dòng)安裝。如果單獨(dú)安裝gcc以及g+比較麻煩,幸運(yùn)的是,Ubuntu提供了一個(gè)build-essential軟件包。 查看該軟件包的依賴關(guān)系,可以看到以下內(nèi)容:$ apt-cache depends build-essentialbuild-essentialDepends: libc6-devDepends: libc6-dev Depends: gcc Depends: g+ Depends: make Depends: dpkg-dev也就是說(shuō),安裝了該軟件包,編譯c/c+所需要的軟件包也都會(huì)被安裝。因此如果想在Ubuntu中編譯c/c+程序,只需要安裝build-essential軟件包就可以了??梢酝茰y(cè)我們實(shí)驗(yàn)中的gcc-4.4.5就是在安裝這個(gè)軟件包時(shí)安裝的。用make menuconfig配置linux內(nèi)核,要安裝libncurses5-dev 套件。2、 更換sh更換shell語(yǔ)言解釋器$sudo mv /bin/sh /bin/sh.old /備份解釋器 $sudo ln -sf bash /bin/sh /更改軟鏈接,規(guī)定使用bash對(duì)腳本進(jìn)行解釋$echo $SHELL運(yùn)行如下:/顯示環(huán)境變量的值ln是linux中一個(gè)非常重要命令。它的功能是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同不的鏈接,這個(gè)命令最常用的參數(shù)是-s,具體用法是:ln -s 源文件 目標(biāo)文件。當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在某個(gè)固定的目錄,放上該文件,然后在其它的 目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤(pán)空間。我們輸入gcc時(shí),執(zhí)行的就是它的鏈接。用ls -l命令去察看,可以看到link的路徑了。Ubuntu默認(rèn)使用dash,而不是bash,這是因?yàn)橛捎赿ash更小,運(yùn)行更快,還與POSIX兼容而crosstool腳本運(yùn)行需要用bash進(jìn)行解釋。需要把Ubuntu默認(rèn)的dash改為bash。表現(xiàn)為 /bin/sh 軟鏈接到了/bin/dash,而不是傳統(tǒng)的/bin/bash。echo $SHELL功能是顯示獲知環(huán)境變量$SHELL的值。何謂環(huán)境變量?在所處的環(huán)境中, 那些供系統(tǒng)或應(yīng)用程序取用而固定存在的一種特殊變量。稱之.環(huán)境變量可由系統(tǒng)預(yù)定或由您自行定義及修改, 又稱為整體變量.也就是說(shuō): 不管你身處何方,這些變量的值都跟著你的環(huán)境而存在。常見(jiàn)的環(huán)境變量:$SHELL 使用哪一種shell$TERM 終端機(jī)的型態(tài)$MAIL 郵件收件位置$PATH 程序搜尋路徑。3、 更換gcc$gcc -v /查看當(dāng)前的GCC版本信息顯示如下:gcc version 4.4.5我們需要用gcc-4.1版本來(lái)生成交叉編譯器。$sudo apt-get install gcc-4.1 /獲取并安裝gcc-4.1ls gcc* /使用通配符,顯示usr/bin目錄下與gcc有關(guān)的目錄File gcc / file 是檢測(cè)文件類型的命令,顯示當(dāng)前的gcc指向gcc-4.4編譯器rm gcc /刪除gcc命令ls gcc* /看到,已經(jīng)沒(méi)有了gccln -s gcc-4.1 gcc/建立從gcc到gcc-4.1的鏈接Ls gcc* /新的gccgcc -v /查看新的編譯器版本信息,顯示已經(jīng)更換到了gcc-4.12、 準(zhǔn)備相關(guān)資源$mkdir /home/ww/embedded /在主文件夾下建立一個(gè)文件夾$cd /home/ww/embedded /進(jìn)入該文件夾$cp /mnt/shared/crosstool-0.43.tar.gz ./ 將crosstool工具拷貝到這個(gè)文件夾并解壓$tar -xvzf crosstool-0.43.tar.gz $cd crosstool-0.43$cp /mnt/shared/gdb-6.5.tar.bz2 ./$cp /mnt/shared/linux-2.6.8.tar.bz2 ./ /進(jìn)入工具文件夾,并把gdb和內(nèi)核文件拷貝進(jìn)來(lái),以供腳本運(yùn)行時(shí)使用。3、 修改配置文件Crosstol工具要想在本機(jī)上順利運(yùn)行必須修改其配置文件,也就是做一下移植。表現(xiàn)為修改編譯的目標(biāo),告訴它源文件在哪,編譯到什么地方,編譯什么版本的gcc和C庫(kù)函數(shù)。1、 修改 arm.dat,指定編譯目標(biāo)為:TARGET=arm-linuxgedit arm.dat /使用gedit比使用vi要方便的多2、 修改demo-arm.sh。指定源文件所在的位置和編譯結(jié)果存放的位置Gedit demo-arm.sh在執(zhí)行過(guò)程中創(chuàng)建這個(gè)文件夾會(huì)出現(xiàn)權(quán)限錯(cuò)誤,需要用管理員權(quán)限創(chuàng)建目標(biāo)文件夾,并修改文件屬性,命令如下:$sudo mkdir /opt/crosstool /建立文件夾$sudo chmod 777 /opt/crosstool /修改讀寫(xiě)屬性Ubuntu的許多操作是在終端中進(jìn)行的在圖形界面上,我們可以通過(guò)屬性中的權(quán)限選項(xiàng)夾進(jìn)行操作。但是一旦文件的屬性顯示當(dāng)前用戶沒(méi)有讀寫(xiě)權(quán)力時(shí),無(wú)法在圖形界面上修改權(quán)限。,通過(guò)sudo命令管理的文件是由root持有權(quán)限的,一般用戶是無(wú)法改變的。常用方法如下:sudo chmod 600 (只有所有者有讀和寫(xiě)的權(quán)限)sudo chmod 644 (所有者有讀和寫(xiě)的權(quán)限,組用戶只有讀的權(quán)限)sudo chmod 700 (只有所有者有讀和寫(xiě)以及執(zhí)行的權(quán)限)sudo chmod 666 (每個(gè)人都有讀和寫(xiě)的權(quán)限)sudo chmod 777 (每個(gè)人都有讀和寫(xiě)以及執(zhí)行的權(quán)限)3、 修改要編譯的gcc版本和庫(kù)文件版本。選用gcc-3.4.5-glibc-2.3.2,在最后一行前加上#表示注釋。gedit gcc-3.4.5-glibc-2.3.2.dat 查看要編譯的gcc/glibc/gbd版本4、 開(kāi)始編譯$cp demo-arm.sh arm.sh/備份腳本$./arm.sh/開(kāi)始運(yùn)行腳本,編譯。過(guò)一段時(shí)間之后,查看安裝了哪些工具:$ls /opt/crosstool/gcc-3.4.5-glibc-2.3.2/arm-linux/bin相當(dāng)于手工安裝了gcc、庫(kù)文件、二進(jìn)制開(kāi)發(fā)包binutil、gbd等工具5、 配置環(huán)境變量為了不使你每次使用交叉編譯工具的時(shí)候都要輸入絕對(duì)路徑,你需要配置環(huán)境變量,將你的交叉編譯工具存放的位置的路徑增加到PATH變量中:$vim /.bashrc 用VI編輯器打開(kāi)bashrc文件增加如下一行:Export PATH=$PATH:/opt/crosstool/gcc-3.4.5-glibc-2.3.2/arm-linux/bin添加程序搜索路徑。類似于在編譯環(huán)境中添加頭文件路徑一樣,系統(tǒng)自動(dòng)會(huì)在添加的路徑中自動(dòng)尋找目標(biāo)。刷新bashrc$source /.bashrc6、 編譯程序,測(cè)試安裝的正確性1.編寫(xiě)hello.c$arm-linux-gcc hello.c /編譯該源程序可看到輸出了ARM體系結(jié)構(gòu)下的可執(zhí)行文件,格式為ELF, 當(dāng)前的X86是沒(méi)法辦運(yùn)行的,交叉編譯,面向不同的處理器。收獲:1、 虛擬機(jī)的安裝流程,共享文件夾的自動(dòng)掛載,及添加自啟動(dòng)指令的方法。2、 學(xué)會(huì)了如何利用crosstool腳本安裝交叉編譯環(huán)境,課堂上講了如何手工安裝gcc/庫(kù)文件/binutil開(kāi)發(fā)包,加上嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)課上直接獲取GUN工具鏈,基本掌握了三種建立交叉編譯環(huán)境的方法。3、 Linux的基本指令如:cd ls cp rm mkdir exit tar file 連接指令ln 超級(jí)用戶指令sudo 獲取安裝指令apt-get install mv 更新系統(tǒng)指令sudo aptitude update 、獲取變量值echo 通配符的使用,cd+.tab、4、 設(shè)置環(huán)境變量的方法,可以大大方便開(kāi)發(fā),而且對(duì)指令的運(yùn)行,有了更深的認(rèn)識(shí)??梢韵胂?,cd /ls/cp等這些在usr/bin中的基本應(yīng)用程序的路徑已經(jīng)添加在了PATH中。這樣用戶在中斷中輸入的時(shí)候,內(nèi)核可以找到這個(gè)程序并執(zhí)行。5、 接觸了兩種不同的腳本命令解釋器。6、 利用ln鏈接和環(huán)境變量都可以方便開(kāi)發(fā),但是降低了可讀性,增加了理解難度7、 學(xué)會(huì)使用sudo chmod修改文件夾的屬性8、 VI指令:i插入、dd刪去一行,shift+zz保存并退出。Delete刪除字符。9、 對(duì)于編輯類的工作,gdit更好用10、 新建虛擬機(jī)就是新買(mǎi)了一臺(tái)機(jī)器,其實(shí)就是在硬盤(pán)里多了兩個(gè)文件夾,一個(gè)配置文件夾,一個(gè)虛擬機(jī)文件夾,刪掉之后就什么都沒(méi)了。11、 為什么使用交叉開(kāi)發(fā)?嵌入式系統(tǒng)多采用交叉編譯的方式,在本機(jī)編譯好的程序是不能在本機(jī)運(yùn)行的,需要通過(guò)特定的手段(例如燒寫(xiě),下載等)安裝到目標(biāo)系統(tǒng)上執(zhí)行。這種編譯運(yùn)行的方法比較繁瑣,是受到實(shí)際條件限制的。大多數(shù)的嵌入式系統(tǒng)目標(biāo)板系統(tǒng)資源都很有限,無(wú)論是存儲(chǔ)空間還是CPU處理能力,都很難達(dá)到編譯程序的要求。而且很多目標(biāo)板是沒(méi)有操作系統(tǒng)的,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論