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

下載本文檔

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

文檔簡介

嵌入式操作系統(tǒng)實驗報告姓名

王威

學(xué)號

SA12226437

所在班級

系統(tǒng)芯片實驗名稱

實驗一隊友:張圣苗亞實驗內(nèi)容1、準(zhǔn)備工作工作:安裝virtualbox虛構(gòu)機(jī)工具,并安裝ubuntu10.10系統(tǒng)、加強(qiáng)型工具,實現(xiàn)共享文件夾的自動掛載。2、利用crosstool供給的腳本安裝和有關(guān)資源編譯面向的ARM的GCC工具。詳盡內(nèi)容1:安裝虛構(gòu)機(jī)軟件和虛構(gòu)機(jī)時要達(dá)成的主要步驟有:安裝virtualbox,成立一臺虛構(gòu)機(jī),分派內(nèi)存和硬盤,指定共享文件夾(主機(jī)和虛構(gòu)機(jī)可共同操作),指定操作系統(tǒng)鏡像文件路徑(相當(dāng)于光盤,第一次啟動時安裝),安裝虛構(gòu)操作系統(tǒng),安裝加強(qiáng)工具包,實現(xiàn)共享文件夾的自動掛載。有幾點(diǎn)需要注意:1、虛構(gòu)硬盤盡量分派大一些,以后再擴(kuò)就比較麻煩。2、共享文件夾不要有中文路徑,否則掛載后看不到中文名稱文件。3、安裝操作系統(tǒng)時,不可以斷網(wǎng),需要下載各樣資源,否則會異樣。詳盡內(nèi)容2:安裝gcc-4.1替代操作系統(tǒng)中的,用它編譯交錯編譯器和庫文件、gdb-6.5。為了達(dá)成這樣的目標(biāo),我們需要安裝與腳真有關(guān)的工具,需要改正crosstool中的配置文件arm.dat以指定編譯的目標(biāo)位arm-linux。需要改正crosstool中的腳本文件,指定編譯的源文件和目的文件夾(以后成立),指定配置文件為,在該配置文件中,指定了交錯編譯器和調(diào)試器、C庫的版本。最后運(yùn)轉(zhuǎn)腳本,實現(xiàn)了對GCC工具包的安裝,包含gcc預(yù)辦理器、匯編器、編譯器、鏈接器、調(diào)試器、反匯編工具等等。整個實驗中我們需要的資源是、、,將擱置在共享文件夾的crosstool工具拷貝到主文件夾下并解壓,將gbd和linux文件拷貝到crosstool文件夾,拷貝是因為編譯時需要內(nèi)核文件。實驗步驟實驗準(zhǔn)備:在實驗準(zhǔn)備中,在安裝完加強(qiáng)工具包(安裝vmwaretools實現(xiàn)與XP文件共享)并重啟以后,需要實現(xiàn)對共享文件夾的自動掛載,只需要改正etc目錄中的配置文件rc.local,rc.local是好多l(xiāng)inux系統(tǒng)管理員的獨(dú)愛,因為凡是需要隨系統(tǒng)自動啟動的服務(wù)、程序等,都能夠放在里面。$sudomkdir/mnt/share$sudomount-tvboxsfembedded/mnt/shared上邊三句話實現(xiàn)了將共享文件夾embeded掛載到了share上。gedit/etc/rc.local將第2句命令增添在exit以前,實現(xiàn)了自動掛載功能。實驗一一、搭建編譯環(huán)境1、安裝于腳本運(yùn)轉(zhuǎn)有關(guān)及其余的工具bison、flex、build-essential、patch、libncurses5-dev。$sudoapt-getinstallbisonflexbuild-essentialpatchlibncurses5-dev運(yùn)轉(zhuǎn)以下:有關(guān):Linux下有一個SUDO命令,使得一般用戶能夠履行超級用戶的部份權(quán)益,在/etc/sudoers中設(shè)置了可履行sudo指令的用戶。若其未經(jīng)受權(quán)的用戶妄圖使用sudo,則會發(fā)出警示的郵件給管理員。用戶使用sudo時,一定先輸入密碼,以后有5分鐘的有效限期,超出限期則一定從頭輸入密碼。apt-get一個下載的命令參數(shù)有install安裝update更新remove移除check檢查。比方:sudoapt-getinstallsamba-3.0-7下載并安裝一個名字為samba-3.0-7的程序在UNIX初期時代,編寫一個編譯器是一件特別耗時的工作。人們?yōu)榱撕喕_發(fā)過程,開發(fā)了Lex和YACC程序來解決第一個任務(wù),依據(jù)用戶描繪的語言,生成能夠解決問題的C/C++語言代碼,供開發(fā)者使用。將源代碼文件分解為各樣詞匯(Lex);找到這些詞匯的構(gòu)成方式(YACC);GNU軟件協(xié)會開發(fā)了Flex和BISON,其功能與LEX和YACC基本兼容,并且在Lex和YACC供給的功能的基礎(chǔ)長進(jìn)行了各樣擴(kuò)展。FLex能夠?qū)⑤斎霐?shù)據(jù)流分類為各種詞匯,為以后的語法剖析做準(zhǔn)備Bison該文件實質(zhì)上就是一個C語言的源代碼,作用就是對輸入文件進(jìn)行語法剖析。GNUBison在Linux下的安裝特別簡單。你能夠去它的官方網(wǎng)站上下載安裝包自行安裝,ubuntu系統(tǒng)下更簡單的方法相同是直接在命令行敲入命令實現(xiàn)。Ubuntu缺省狀況下,并無供給C/C++的編譯環(huán)境,所以還需要手動安裝。假如單獨(dú)安裝gcc以及g++比較麻煩,好運(yùn)的是,Ubuntu供給了一個build-essential軟件包。查察該軟件包的依靠關(guān)系,能夠看到以下內(nèi)容:$apt-cachedepends"build-essential"build-essentialDepends:libc6-devDepends:<libc-dev>libc6-devDepends:gccDepends:g++Depends:makeDepends:dpkg-dev也就是說,安裝了該軟件包,編譯

c/c++

所需要的軟件包也都會被安裝。

所以假如想在Ubuntu

中編譯

c/c++

程序,只需要安裝

build-essential

軟件包就能夠了。能夠推斷我們實驗中的

就是在安裝這個軟件包時安裝的

。用

makemenuconfig

配置

linux

內(nèi)核,要安裝

libncurses5-dev

套件。2、改換sh改換shell語言解說器$sudomv/bin/sh/bin/sh.old//備份解說器$sudoln-sfbash/bin/sh//改正軟鏈接,規(guī)定使用bash對腳本進(jìn)行解說$echo$SHELL運(yùn)轉(zhuǎn)以下://顯示環(huán)境變量的值ln是linux中一個特別重要命令。它的功能是為某一個文件在此外一個地點(diǎn)成立一個同不的鏈接,這個命令最常用的參數(shù)是-s,詳細(xì)用法是:ln-s源文件目標(biāo)文件。當(dāng)我們需要在不一樣的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個一定相同的文件,我們只需在某個固定的目錄,放上該文件,而后在其余的目錄下用ln命令鏈接(link)它就能夠,不用重復(fù)的占用磁盤空間。我們輸入gcc時,履行的就是它的鏈接。用ls-l命令去觀察,能夠看到link的路徑了。Ubuntu默認(rèn)使用dash,而不是bash,這是因為因為dash更小,運(yùn)轉(zhuǎn)更快,還與POSIX兼容而crosstool腳本運(yùn)轉(zhuǎ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ù)約或由您自行定義及改正,又稱為整體變量.也就是說:不論你身處何方,這些變量的值都隨著你的環(huán)境而存在。常有的環(huán)境變量:$SHELL使用哪一種shell$TERM終端機(jī)的型態(tài)$MAIL郵件收件地點(diǎn)$PATH程序找尋路徑。3、改換gcc$gcc-v//查察目前的GCC版本信息顯示以下:我們需要用gcc-4.1版原來生成交錯編譯器。$sudoapt-getinstallgcc-4.1//獲得并安裝gcc-4.1lsgcc*//使用通配符,顯示usr/bin目錄下與gcc有關(guān)的目錄Filegcc//file是檢測文件種類的命令,顯示目前的gcc指向gcc-4.4編譯器rmgcc//刪除gcc命令lsgcc*//看到,已經(jīng)沒有了gccln-sgcc-4.1gcc//成立從gcc到gcc-4.1的鏈接Lsgcc*//新的gccgcc-v/查察新的編譯器版本信息,顯示已經(jīng)改換到了gcc-4.1二、準(zhǔn)備有關(guān)資源$mkdir/home/ww/embedded//在主文件夾下成立一個文件夾$cd/home/ww/embedded//進(jìn)入該文件夾$cp/mnt/shared/crosstool-0.43.tar.gz./將crosstool工具拷貝到這個文件夾并解壓$cdcrosstool-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)來,以供腳本運(yùn)轉(zhuǎn)時使用。三、改正配置文件Crosstol工具要想在本機(jī)上順利運(yùn)轉(zhuǎn)一定改正其配置文件,也就是做一下移植。表現(xiàn)為改正編譯的目標(biāo),告訴它源文件在哪,編譯到什么地方,編譯什么版本的gcc和C庫函數(shù)。1、改正arm.dat,指定編譯目標(biāo)為:TARGET=arm-linuxgeditarm.dat//使用gedit比使用vi要方便的多2、改正demo-arm.sh。指定源文件所在的地點(diǎn)和編譯結(jié)果寄存的地點(diǎn)Geditdemo-arm.sh在履行過程中創(chuàng)立這個文件夾會出現(xiàn)權(quán)限錯誤,需要用管理員權(quán)限創(chuàng)立目標(biāo)文件夾,并改正文件屬性,命令以下:$sudomkdir/opt/crosstool//成立文件夾$sudochmod777/opt/crosstool//改正讀寫屬性Ubuntu的很多操作是在終端中進(jìn)行的在圖形界面上,我們能夠經(jīng)過屬性中的權(quán)限選項夾進(jìn)行操作??墒且坏┪募膶傩燥@示目前用戶沒有讀寫權(quán)益時,無法在圖形界面上修改權(quán)限。,經(jīng)過sudo命令管理的文件是由root擁有權(quán)限的,一般用戶是無法改變的。常用方法以下:sudochmod600×××(只有全部者有讀和寫的權(quán)限)sudochmod644×××(全部者有讀和寫的權(quán)限,組用戶只有讀的權(quán)限)sudochmod700×××(只有全部者有讀和寫以及履行的權(quán)限)sudochmod666×××(每個人都有讀和寫的權(quán)限)sudochmod777×××(每個人都有讀和寫以及履行的權(quán)限)3、改正要編譯的gcc版本和庫文件版本。采納,在最后一行前加上#表示說明。查察要編譯的gcc/glibc/gbd版本四、開始編譯備份腳本$./arm.sh/開始運(yùn)轉(zhuǎn)腳本,編譯。過一段時間以后,查察安裝了哪些工具:相當(dāng)于手工安裝了gcc、庫文件、二進(jìn)制開發(fā)包binutil、gbd等工具五、配置環(huán)境變量為了不使你每次使用交錯編譯工具的時候都要輸入絕對路徑,你需要配置環(huán)境變量,將你的交錯編譯工具寄存的地點(diǎn)的路徑增添到PATH變量中:$vim~/.bashrc用VI編寫器翻開bashrc文件增添以下一行:Export增添程序搜尋路徑。近似于在編譯環(huán)境中增添頭文件路徑相同,系統(tǒng)自動會在增添的路徑中自動找尋目標(biāo)。刷新bashrc$source~/.bashrc六、編譯程序,測試安裝的正確性1.編寫hello.c$arm-linux-gcchello.c//編譯該源程序可看到輸出了ARM系統(tǒng)構(gòu)造下的可履行文件,格式為ELF,目前的X86是無法辦運(yùn)轉(zhuǎn)的,交錯編譯,面向不一樣的辦理器。收獲:1、虛構(gòu)機(jī)的安裝流程,共享文件夾的自動掛載,及增添自啟動指令的方法。2、學(xué)會了怎樣利用crosstool腳本安裝交錯編譯環(huán)境,講堂上講了怎樣手工安裝gcc/庫文件/binutil開發(fā)包,加上嵌入式系統(tǒng)設(shè)計實驗課上直接獲得GUN工具鏈,基本掌握了三種成立交錯編譯環(huán)境的方法。3、Linux的基本指令如:cdlscprmmkdirexittarfile連結(jié)指令ln超級用戶指令sudo獲得安裝指令apt-getinstallmv更新系統(tǒng)指令sudoaptitudeupdate、獲得變量值echo通配符的使用,cd+..tab、4、設(shè)置環(huán)境變量的方法,能夠大大方便開發(fā),并且對指令的運(yùn)轉(zhuǎn),有了更深的認(rèn)識。能夠想象,cd/ls/cp等這些在usr/bin中的基本應(yīng)用程序的路徑已經(jīng)增添在了PATH中。這樣用戶在中止中輸入的時候,內(nèi)核能夠找到這個程序并履行。5、接觸了兩種不一樣的腳本命令解說器。6、利用ln鏈接和環(huán)境變量都能夠方便開發(fā),可是降低了可讀性,增添了理解難度7、學(xué)會使用sudochmod改正文件夾的屬性8、VI指令:i插入、dd刪去一行,shift+zz保留并退出。Delete刪除字符。9、關(guān)于編寫類的工作,gdit更好用10、新建虛構(gòu)機(jī)就是新買了一臺機(jī)器,其實就是在硬盤里多了兩個文件夾,一個配置文件夾,一個虛構(gòu)機(jī)文件夾,刪掉以后就什么都沒了。11、為何使用交錯開發(fā)?嵌入式系統(tǒng)多采納交錯編譯的方式,在本機(jī)編譯好的程序是不可以在本機(jī)運(yùn)轉(zhuǎn)的,需要經(jīng)過特定的手段(例如燒寫,下載等)安裝到目標(biāo)系統(tǒng)上履行。這類編譯運(yùn)轉(zhuǎn)的方法比較繁瑣,是遇到實質(zhì)條件限制的。大多數(shù)的嵌入式系統(tǒng)目標(biāo)板系統(tǒng)資源都很有限,不論是儲存空間仍是CPU辦理能力,都很難達(dá)到編譯程序的要求。并且好多目標(biāo)板是沒有操作系統(tǒng)的,需要經(jīng)過其余的機(jī)器編譯操作系統(tǒng)和應(yīng)用程序。12、交錯開發(fā)又為何選擇

LINUX

溫馨提示

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

評論

0/150

提交評論