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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論