嵌入式操作系統(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頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、嵌入式操作系統(tǒng)實驗報告隊友:張圣苗亞實驗內(nèi)容1、準備工作工作:安裝 virtualbox虛擬機工具,并安裝ubuntu10.10系統(tǒng)、增強 型工具,實現(xiàn)共享文件夾的自動掛載。2、利用crosstool提供的腳本安裝和相關(guān)資源編譯面向的ARM的GCC工具。詳細內(nèi)容1:安裝虛擬機軟件和虛擬機時要完成的主要步驟有:安裝 virtualbox ,建立一臺虛擬機,分配內(nèi)存和硬盤,指定共享文件夾(主機和虛擬 機可共同操作),指定操作系統(tǒng)鏡像文件路徑(相當于光盤,第一次啟動時安裝), 安裝虛擬操作系統(tǒng),安裝增強工具包,實現(xiàn)共享文件夾的自動掛載。有幾點需要汪忠:1、虛擬硬盤盡量分配大一些,之后再擴就比較麻煩。

2、2、共享文件夾不要有中文路徑,不然掛載后看不到中文名稱文件。3、安裝操作系統(tǒng)時,不能斷網(wǎng),需要下載各種資源,不然會異常。詳細內(nèi)容2需要安裝與腳本相關(guān)的工具,需要修改crosstool中的配置文件 arm.dat以指定編譯的目標位arm-linux。需要修改需要的資源實驗步驟實驗準備:在實驗準備中,在安裝完增強工具包(安裝vmware tools實現(xiàn)與XP文件共享)并重啟之后,需要實現(xiàn)對共享文件夾的自動掛載,只需要修改 etc目錄中的 配置文件rc.local, rc.local是很多l(xiāng)inux系統(tǒng)管理員的偏愛,因為凡是需要隨系統(tǒng) 自動啟動的服務(wù)、程序等,都可以放在里面。$sudo mkdir

3、/mnt/share$sudo mount -t vboxsf embedded /mnt/shared上面三句話實現(xiàn)了將共享文件夾embeded掛載到了 share上。gedit /etc/rc.local將第2句命令添加在exit之前,實現(xiàn)了自動掛載功能。實驗一一、搭建編譯環(huán)境1、安裝于腳本運行相關(guān)及其他的工具 bison、flex、build-essentiak patch、 libncurses5-deu$sudo apt-get install bison flex build-essential patch libncurses5-de運行如下:update-alternative

4、s :使用 /usr/bin/f akeroot-sysv 來提 oot),于自動模式中.正在迨置 libalgorithm-diff - perl (1.19.02-1).正在設(shè)置 libalgorithm-merge-perl (0.08*1).正在設(shè)置 libncuSEs5-dev (5.7+29100626-Qubuntul) .正在設(shè)置 liKtdc+544-dun (4.4.4-14ubuntu5.1).正在設(shè)置 g+*-4,4 (4.4.4-14ubuntu5,l) ,一正在設(shè)置 g+ (4:4.4.4-lubuntu2).update-altematives:使用 /usr/b

5、in/g+ 來提供 /usr/b:正在設(shè)置 build-essential (11.5) .一相關(guān):Linux下有一個SUDO命令,使得普通用戶能夠行使超級用戶的部份權(quán)利,在/etc/sudoers中設(shè)置了可執(zhí)行sudo指令的用戶。若其未經(jīng)授權(quán)的用戶企圖使用 sudo, 則會發(fā)出警告的郵件給管理員。用戶使用 sudo時,必須先輸入密碼,之后有 5分鐘的有效 期限,超過期限則必須重新輸入密碼。apt-get 一個下載的命令參數(shù)有install安裝update 更新remove 移除check檢查。比如:sudo apt-get install samba-3.0-7下載并安裝一個名字為samba

6、-3.0-7 的程序在UNIX早期時代,編寫一個編譯器是一件非常耗時的工作。人們?yōu)榱撕喕_發(fā)過程, 開發(fā)了 Lex和YACC程序來解決第一個任務(wù),根據(jù)用戶描述的語言,生成能夠解決問題的 C/C+語言代碼,供開發(fā)者使用。將源代碼文件分解為各種詞匯(Lex);找到這些詞匯的組成方式( YACC );GNU軟件協(xié)會開發(fā)了 Flex和BISON ,其功能與LEX和YACC基本兼容,并且在 Lex 和YACC提供的功能的基礎(chǔ)上進行了各種擴展。FLex能夠?qū)⑤斎霐?shù)據(jù)流分類為各類詞匯,為后來的語法分析做準備Bison該文件本質(zhì)上就是一個C語言的源代碼,作用就是對輸入文件進行語法分析。GNU Bison在Li

7、nux下的安裝非常簡單。你可以去它的官方網(wǎng)站上下載安裝包自行安裝, ubuntu系統(tǒng)下更簡單的方法同樣是直接在命令行敲入命令實現(xiàn)。Ubuntu缺省情況下,并沒有提供C/C + +的編譯環(huán)境,因此還需要手動安裝。如果單獨安裝gcc以及g+比較麻煩,幸運的是,Ubuntu提供了一個build-essential軟件包。 查看該軟件包的依賴關(guān)系,可以看到以下內(nèi)容:$ apt-cache depends "build-essential" build-essentialDepends: libc6-devDepends: <libc-dev>libc6-devDepen

8、ds: gccDepends: g+ Depends: make Depends: dpkg-dev也就是說,安裝了該軟件包,編譯 c/c+所需要的軟件包也都會被安裝。因此如果想在Ubuntu中編譯c/c+程序,只需要安裝build-essential軟件包就可以了 ??梢酝茰y我們實驗中的。用 make menuconfig 配置 linux 內(nèi)核,要安裝 libncurses5-dev 套件。2、更換sh更換shell語言解釋器$sudo mv /bin/sh /bin/sh.old 隔份解釋器$sudo ln -sf bash /bin/sh /更改軟鏈接,規(guī)定使用 bash對腳本進行解釋

9、 $echo $SHELL運行如下:/顯示環(huán)境變量的值ln是linux中一個非常重要命令。它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數(shù)是-s,具體用法是:ln -s源文件目標文件。當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在其它的目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。我們輸入gcc時,執(zhí)行的就是它的鏈接。 用ls -l命令去察看,可以看到link的路徑了。Ubuntu默認使用dash,而不是bash,這是因為由于 dash更小,運行更快,還

10、與POSIX 兼容而crosstool腳本運行需要用 bash進行解釋。需要把Ubuntu默認的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終端機的型態(tài)$MAIL郵件收件位置$PATH程序搜尋路徑。3、更換g

11、cc$gcc -v /查看當前的GCC版本信息顯示如下:gcc version 4.4.5我們需要用gcc-4.1版本來生成交叉編譯器。$sudo apt-get install gcc-4.1獲取并安裝 gcc-4.1ls gcc* /使用通配符,顯示usr/bin目錄下與gcc有關(guān)的目錄File gcc / file是檢測文件類型的命令, 顯示當前的gcc指向gcc-4.4®譯器rm gcc /刪除gcc命令ls gcc* 看到,已經(jīng)沒有了 gccln -s gcc-4.1 gcc/娃立從 gcc至U gcc-4.1 的鏈接Ls gcc* /新的 gccgcc -v小看新的編譯器

12、版本信息,顯示已經(jīng)更換到了 gcc-4.1二、準備相關(guān)資源$mkdir /home/ww/embedded /森主文件夾下建立一個文件夾$cd /home/ww/embedded /進入該文件夾將crosstoolX具拷貝到這個文件夾并解壓$cd crosstool-0.43進入工具文件夾,并把gdb和內(nèi)核文件拷貝進來,以供腳本運行時使用。三、修改配置文件Crosstol工具要想在本機上順利運行必須修改其配置文件,也就是做一下移植。表現(xiàn)為修改編譯的目標,告訴它源文件在哪,編譯到什么地方,編譯什么版 本的gcc和C庫函數(shù)。1、修改arm.dat,指定編譯目標為:TARGET=arm-linuxg

13、edit arm.dat /位用gedit比使用vi要方便的多2、修改demo-arm.sht指定源文件所在的位置和編譯結(jié)果存放的位置Gedit demo-arm.sh在執(zhí)行過程中創(chuàng)建這個文件夾會出現(xiàn)權(quán)限錯誤,需要用管理員權(quán)限創(chuàng)建目標文件夾,并修改文件屬性,命令如下:$sudo mkdir /opt/crosstool 建立文件夾$sudo chmod 777 /opt/crosstool 修改讀寫屬性Ubuntu的許多操作是在終端中進行的在圖形界面上,我們可以通過屬性中的權(quán)限選項夾進行操作。但是一旦文件的 屬性顯示當前用戶沒有讀寫權(quán)力時,無法在圖形界面上修改權(quán)限。,通過sudo命令管理的文件

14、是由root持有權(quán)限的,一般用戶是無法改變的。常用方法如下:sudo chmod 600xxx (只有所有者有讀和寫的權(quán)限)sudo chmod 644 x x x (所有者有讀和寫的權(quán)限,組用戶只有讀的權(quán)限)sudo chmod 700 x x x (只有所有者有讀和寫以及執(zhí)行的權(quán)限)sudo chmod 666 x x x (每個人都有讀和寫的權(quán)限)sudo chmod 777 x x X (每個人都有讀和寫以及執(zhí)行的權(quán)限)3、修改要編譯的gcc版本和庫文件版本。查看要編譯的gcc/glibc/gbcdfi本四、開始編譯$cp demo-arm.sh arm.sh隔份腳本$./arm.sh

15、/開始運行腳本,編譯。過一段時間之后,查看安裝了哪些工具:相當于手工安裝了 gCG庫文件、二進制開發(fā)包 binutik gbd等工具五、配置環(huán)境變量為了不使你每次使用交叉編譯工具的時候都要輸入絕對路徑,你需要配置環(huán)境變量,將你的交叉編譯工具存放的位置的路徑增加到PATH®量中:$vim /.bashrc 用VI編輯器打開bashrc文件增加如下一行:Export添加程序搜索路徑。類似于在編譯環(huán)境中添加頭文件路徑一樣,系統(tǒng)自動會在添加的路徑中自動尋找目標。刷新bashrc$source /.bashrc六、編譯程序,測試安裝的正確性1.編寫 hello.c$arm-linux-gcc

16、hello.c /編譯該源程序可看到輸出了 ARM體系結(jié)構(gòu)下的可執(zhí)彳T文件,格式為 ELF,當前的X86是沒法辦運行的, 交叉編譯,面向不同的處理器。收獲:1、虛擬機的安裝流程,共享文件夾的自動掛載,及添加自啟動指令的方法。2、學會了如何利用 crosstool腳本安裝交叉編譯環(huán)境,課堂上講了如何手工安裝gcc/庫文件/binutil開發(fā)包,加上嵌入式系統(tǒng)設(shè)計實驗課上直接獲取GUN工具鏈,基本掌握了三種建立交叉編譯環(huán)境的方法。3、Linux的基本指令如: cd ls cp rm mkdir exit tar file 連接指令ln 超級用 戶指令 sudo 獲取安裝指令apt-get inst

17、all mv 更新系統(tǒng)指令 sudo aptitudeupdate、獲取變量值echo 通配符的使用,cd+.tab>4、設(shè)置環(huán)境變量的方法,可以大大方便開發(fā),而且對指令的運行,有了更深的 認識??梢韵胂螅琧d/ls/cp等這些在usr/bin中的基本應(yīng)用程序的路徑已經(jīng)添加在 了 PATH中。這樣用戶在中斷中輸入的時候,內(nèi)核可以找到這個程序并執(zhí)行。5、接觸了兩種不同的腳本命令解釋器。6、利用ln鏈接和環(huán)境變量都可以方便開發(fā),但是降低了可讀性,增加了理解難度7、學會使用sudo chmod修改文件夾的屬性8、VI指令:i插入、dd刪去一行,shift+zz保存并退出。Delete刪除字符。9、對于編輯類的工作,gdit更好用10、新建虛擬機就是新買了一臺機器,其實就是在硬盤里多了兩個文件夾,一個配置文件夾,一個虛擬機文件夾,刪掉之后就什么都沒了。11、為什么使用交叉開發(fā)?嵌入式系統(tǒng)多采用交叉編譯的方式,在本機編譯好的程序是不能在本機運行的,需要通過特定的手段(例如燒寫,下載等)安裝到目標系統(tǒng)上執(zhí)行。這種編譯運行的方法比較繁瑣,是受到實際條件限制的。大多數(shù)的嵌入式系統(tǒng)目標板系統(tǒng)資源都很有限,無論是存儲空間還是 CPU處理能力,都很難達到編譯程序的要求。而且很多目標板是沒有操作系統(tǒng)的,需要通過其他的機器編譯操作系統(tǒng)和應(yīng)用

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論