嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第1頁
嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第2頁
嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第3頁
嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第4頁
嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書韓桂明 趙志鵬 張錕目錄實(shí)驗(yàn)一:vmware虛擬機(jī)安裝與使用4一:實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)內(nèi)容及步驟4三、實(shí)驗(yàn)儀器和設(shè)備17四、實(shí)驗(yàn)報(bào)告要求17實(shí)驗(yàn)二:linux操作系統(tǒng)的配置與安裝18一:實(shí)驗(yàn)?zāi)康?8二、實(shí)驗(yàn)內(nèi)容及步驟18三、實(shí)驗(yàn)儀器和設(shè)備28四、實(shí)驗(yàn)報(bào)告要求28實(shí)驗(yàn)三:linux常用操作指令29一:實(shí)驗(yàn)?zāi)康?9二、實(shí)驗(yàn)內(nèi)容29三、實(shí)驗(yàn)儀器和設(shè)備31四、實(shí)驗(yàn)報(bào)告要求31實(shí)驗(yàn)四:linux下編輯器的使用32一:實(shí)驗(yàn)?zāi)康?2二、實(shí)驗(yàn)內(nèi)容及步驟32三、實(shí)驗(yàn)儀器和設(shè)備34四、實(shí)驗(yàn)報(bào)告要求34實(shí)驗(yàn)五:linux下c語言編程 實(shí)現(xiàn)階乘運(yùn)算與素?cái)?shù)求解35一:實(shí)驗(yàn)?zāi)康?5二、實(shí)驗(yàn)內(nèi)容及步驟35

2、三、實(shí)驗(yàn)儀器和設(shè)備35四、實(shí)驗(yàn)報(bào)告要求35補(bǔ)充:36實(shí)驗(yàn)六:gun make管理項(xiàng)目與gdb程序調(diào)試41一:實(shí)驗(yàn)?zāi)康?1二、實(shí)驗(yàn)內(nèi)容及步驟41三、實(shí)驗(yàn)儀器和設(shè)備45四、實(shí)驗(yàn)報(bào)告要求45實(shí)驗(yàn)七:linux shell編程46一:實(shí)驗(yàn)?zāi)康?6二、實(shí)驗(yàn)內(nèi)容及步驟46三、實(shí)驗(yàn)儀器和設(shè)備46四、實(shí)驗(yàn)報(bào)告要求46實(shí)驗(yàn)八:arm+linux的嵌入式開發(fā)工具鏈的建立47一:實(shí)驗(yàn)?zāi)康?7二、實(shí)驗(yàn)內(nèi)容及步驟47三、實(shí)驗(yàn)儀器和設(shè)備52四、實(shí)驗(yàn)報(bào)告要求53實(shí)驗(yàn)一:vmware虛擬機(jī)安裝與使用一:實(shí)驗(yàn)?zāi)康?了解vmware的基本基本功能;2了解在vmware虛擬機(jī)中如何安裝系統(tǒng); 3熟練使用vmare虛擬機(jī)。二、實(shí)驗(yàn)內(nèi)

3、容及步驟 1、 實(shí)驗(yàn)內(nèi)容 a. vmware虛擬機(jī)的安裝 b. vmware虛擬機(jī)的配置 c. 在vmware虛擬中安裝系統(tǒng)2、 安裝步驟 a 雙擊安裝程序后來到vmware workstation安裝向?qū)Ы缑妗. 選擇安裝類型c. 我選擇將vmware workstation安裝在默認(rèn)的路徑下d. 配置快捷方式e. 確定無誤后單擊“install”f. 安裝ingg. 輸入產(chǎn)品序列號(hào)h. 安裝完成i.重啟計(jì)算機(jī)j. 安裝完成k. 在虛擬機(jī)窗口規(guī)劃依次展開“文件”“新建”虛擬主機(jī)l. 出現(xiàn)“新建虛擬機(jī)向?qū)А贝翱趍. 建議選擇“自定義”方便后面配置虛擬機(jī)內(nèi)存,如果你的內(nèi)存夠大(512m以上),

4、可以選擇“典型”。說明一下,這些配置在安裝好虛擬機(jī)后還是可以更改的。n. 選擇需要安裝的“客戶操作系統(tǒng)”。 o. 輸入虛擬機(jī)名和存放虛擬機(jī)文件的文件夾的路徑:p. 添加網(wǎng)絡(luò)類型:對(duì)于圖中出現(xiàn)的可供選擇的網(wǎng)絡(luò)類型vmware workstation幫助文件中是這樣定義的: q. 指定虛擬磁盤容量:建議不要勾選復(fù)選框,這樣創(chuàng)建的虛擬磁盤將會(huì)如圖中描述的那樣大小隨著對(duì)虛擬磁盤安裝操作系統(tǒng)和應(yīng)用軟件的多少而增加。大小可以保持默認(rèn)的8gb,這對(duì)安裝常用的操作系統(tǒng)和應(yīng)用軟件來說已經(jīng)足夠了。r. 安裝xp,設(shè)置虛擬機(jī)winxp的屬性,鼠標(biāo)點(diǎn)擊一下虛擬機(jī)winxps. 點(diǎn)擊setting后可得以下界面,這里就

5、可以選擇所用的cd-rom類型,找到xp映象文件。 t. 開始安裝xp系統(tǒng) u. 對(duì)虛擬硬盤進(jìn)行分區(qū)v. 完成xp安裝三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware軟件和xp系統(tǒng)盤四、實(shí)驗(yàn)報(bào)告要求 1. 比較兩款以上的虛擬機(jī)的共同點(diǎn)和不同點(diǎn) 2. 對(duì)本次實(shí)驗(yàn)寫多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)二:linux操作系統(tǒng)的配置與安裝一:實(shí)驗(yàn)?zāi)康?掌握如何在wmware中安裝linux;2掌握如何配置符合自己需要linux系統(tǒng); 3熟練掌握linux兩種安裝模式。二、實(shí)驗(yàn)內(nèi)容及步驟 1、 實(shí)驗(yàn)內(nèi)容 a. 圖形模式下安裝linux,并配置符合自己要求的linux系統(tǒng) b. 文本模式下安裝linux,并配置符合自己

6、要求的linux系統(tǒng) c登陸linux系統(tǒng),熟悉linux環(huán)境 2、 圖形模式下安裝linux步驟 a. 在虛擬機(jī)窗口規(guī)劃依次展開“文件”“新建”虛擬主機(jī) b. 選擇linux安裝類別,在linux安裝中有兩種安裝模式text模式與圖形模式c. 圖形模式下安裝linux,建議跳過cd檢測,cd檢測花比較長的時(shí)間d. 選擇安裝過程的安裝語言e. 選擇linux安裝類型f. 選擇磁盤分區(qū)模式,建議大家使用自動(dòng)分區(qū)g. 配置引導(dǎo)裝載程序h. 配置網(wǎng)絡(luò)i. 配置防火墻j. 選擇系統(tǒng)所能支持的語言k. 設(shè)置根口令,注意根口令是不能隨意給普通用戶知道的。l. 選擇軟件包組m. 安裝程序開始安裝剛才所配置的

7、軟件包n. 安裝過程中更換光盤o. 圖形化界面(x)配置p. 重啟系統(tǒng)q. 設(shè)置普通用戶帳號(hào)與密碼r. 輸入用戶帳號(hào)與密碼s. 完成系統(tǒng)的啟動(dòng)3. 模仿上面的操作完成文本模式下linux系統(tǒng)的安裝 本部分希望能獨(dú)立完成三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux系統(tǒng)盤3張四、實(shí)驗(yàn)報(bào)告要求 1. 比較兩種模式下安裝方面的主要區(qū)別和注意事項(xiàng) 2. 對(duì)本次實(shí)驗(yàn)寫多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)三:linux常用操作指令一:實(shí)驗(yàn)?zāi)康?了解linux下的字符界面;2掌握linux下常用命令; 3熟練掌握增加、刪除用戶和組方法。二、實(shí)驗(yàn)內(nèi)容(一). 了解linux中的基本命令的

8、語法1. linux中有兩種類型的命令:shell內(nèi)部命令、外部應(yīng)用程序命令2. 命令的格式:command option argument 命令名 選項(xiàng) 參數(shù)eg:ls ls l 3 .了解linux中的特定命令的參數(shù)列表以及相關(guān)的幫助man info help eg: man lsinfo lsls -help4.了解系統(tǒng)的文件和目錄操作a名的組成:字母、數(shù)字、下劃線、圓點(diǎn)b文件類型c.一些特別的文件目錄(1)./ 根目錄是最上級(jí)的目錄,其它所有目錄都在其下級(jí)(2)./ 的下級(jí)目錄:bin 目錄是可以執(zhí)行的命令,藍(lán)色的是目錄,綠色的表示可以執(zhí)行文件,淺藍(lán)色的是鏈接文件,即快捷方式sbin

9、系統(tǒng)管理員執(zhí)行的命令dev 設(shè)備存放的目錄etc 所有的配置文件存放地usr 應(yīng)用程序的主目錄home 任何用戶都在home中都有與其用戶名同名的一個(gè)主目錄root 超級(jí)管理員的主目錄,它不在home目錄下。lib 庫文件存放地proc 內(nèi)核在內(nèi)存中的映像,可以在此查看到有關(guān)系統(tǒng)硬件信息.var 日志文件存放地src 系統(tǒng)內(nèi)核文件 (二)每一個(gè)用戶都會(huì)有一個(gè)主目錄,直接敲cd 就可以進(jìn)入用戶的主目錄。且每個(gè)用戶都回有一個(gè)和用戶名同名的目錄即為它的主目錄。路徑:分為絕對(duì)路徑和相對(duì)路徑,以/目錄開始的路徑表示絕對(duì)路徑,相對(duì)于當(dāng)前目錄的路徑是相對(duì)路徑,/ 用戶名 主機(jī)名 當(dāng)前目錄名#超級(jí)用戶用戶名

10、主機(jī)名 當(dāng)前目錄名$普通用戶1.顯示當(dāng)前所處的目錄 pwd命令(顯示絕對(duì)路徑)2.進(jìn)入其它目錄 cd 命令 eg:cd /root3.進(jìn)入上一級(jí)目錄 cd .4.進(jìn)入上一次進(jìn)入的目錄 cd 5.顯示目錄中的文件和子文件 ls 查看目錄以及隱藏文件 ll a6.創(chuàng)建目錄 mkdir 文件名 7.同時(shí)創(chuàng)建多個(gè)目錄 mkdir 文件名1 文件名2 8.遞歸式創(chuàng)建目錄樹 mkdir p 111/11/19.刪除空文件 rmdir 文件名10.刪除非空文件 rm rf 文件名11.查找文件 find 目標(biāo) name 文件(可以使用通配符)12.顯示文件內(nèi)容cat filename一屏查看less fil

11、ename可以上下定位查看more filename多屏顯示內(nèi)容13. head:顯示文件的前n行 head n 文件名14.tail: 顯示文件的后n行 tail n 文件名15.cp:拷貝文件 cp 文件路徑 新文件路徑16.mv:移動(dòng)文件 mv 源地址 目標(biāo)地址 17.ln:創(chuàng)建符號(hào)鏈接文件 硬件鏈接 eg : ln abc.txt abc符號(hào)鏈接 eg : ln n abc.txt a (相當(dāng)與創(chuàng)建快捷方式) 18.sort:排序命令,eg:sort /etc/passwd 19.grep:查找文件,eg:grep zhao /etc/passwd 20.wc:對(duì)文本文件進(jìn)行統(tǒng)計(jì),得出

12、其中的字符數(shù)、行數(shù)等信息21.du 文件名 查看文件的大小22.格式化硬盤為ext3文件系統(tǒng) mkfs.ext3 /dev/sda(sdbsdc)21.格式化后掛載 mount t ext3 /dev/sda /home/目錄名22.查看當(dāng)前用戶的所屬 id23.查看當(dāng)前是哪個(gè)用戶登錄 w 24.查看自己是誰 who am i /who25.查看ip ifconfig26.查看文件的格式 file 文件名 (如文本格式、目錄格式等等)(三) 增加、刪除用戶和組用戶和組的管理 1.創(chuàng)建用戶:方法1:#useradd username p password 例:增加用戶kk,密碼kk #usera

13、dd kk p kk 方法2:#useradd 用戶名 passwd 用戶名 提示輸入密碼 確認(rèn)密碼或者直接修改/etc/passwd文件,然后手工創(chuàng)建相應(yīng)的用戶主目錄 2.創(chuàng)建組 groupadd 組名passwd d一般不設(shè)置密碼.設(shè)置該用戶為該組的管理員gpasswd a 用戶名組名.設(shè)置該用戶的uid (超級(jí)管理員的uid為,0系統(tǒng)用戶的500、500=系統(tǒng)外部用戶(手動(dòng)創(chuàng)建的)=65535) useradd u uid 用戶名5.設(shè)置組uid groupadd g uid 組名.將該用戶添加到該組中g(shù)passwd a 用戶名組名.查看用戶屬于哪個(gè)組grep 用戶名/etc/group

14、 8.刪除空組groupdel 組名.為組改名字groupmod n 新名原名10.為用戶改名 usermod l 新名 原名 11注銷系統(tǒng)的logout命令三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux 系統(tǒng)四、實(shí)驗(yàn)報(bào)告要求 1. 寫出四種以上常用命令的使用參數(shù)功能。 2. 對(duì)本次實(shí)驗(yàn)寫多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)四:linux下編輯器的使用一:實(shí)驗(yàn)?zāi)康?學(xué)習(xí)使用vi編輯器建立、編輯、顯示以及加工處理文本文件。二、實(shí)驗(yàn)內(nèi)容及步驟 (一)實(shí)驗(yàn)內(nèi)容1.進(jìn)入和退出vi。2.利用文本插入方式建立一個(gè)文件。3.在新建的文本文件上移動(dòng)光標(biāo)。4.對(duì)文本文件執(zhí)行刪除、復(fù)原、修改

15、、替換操作。(二)實(shí)驗(yàn)步驟1.進(jìn)入和退出vi進(jìn)入vi在系統(tǒng)提示符($)下輸入命令vi和想要編輯(建立)的文件名(如example),便可進(jìn)入vi。退出vi在命令方式下可有幾種方法退出vi編輯器:wq 把編輯緩沖區(qū)的內(nèi)容寫到你編輯的文件中,退出編輯器,回到unix shell下。:zz 僅當(dāng)作過修改時(shí)才將緩沖區(qū)內(nèi)容寫到文件上。:x 與 :zz 相同。:q! 強(qiáng)行退出vi。感嘆號(hào)(!)告訴vi,無條件退出,丟棄緩沖區(qū)內(nèi)容。這樣,先前對(duì)該文件所做的修改或輸入都被拋棄。2.新建文件在unix提示符$之后,輸入命令 :vi myfile,然后按enter鍵。輸入插入命令i(屏幕上看不到字符i)。然后,輸

16、入以下文本行:to the only woman tht i, for mang year you have been my wife發(fā)現(xiàn)這兩行有錯(cuò),進(jìn)行改正:按esc鍵,從插入方式回到命令方式。按光標(biāo)上移鍵,使光標(biāo)移到第一行。按光標(biāo)左移鍵,使光標(biāo)移到“tht”的第二個(gè)“t”處。輸入i(這是插入命令),然后輸入a。該行變成如下形式:to the only woman that i, 按光標(biāo)右移鍵,使光標(biāo)移到“i”上。我們想在“i”之后輸入一個(gè)空格和單詞“l(fā)ove”。為此,輸入附加命令“a”。結(jié)果屏幕顯示為:to the only woman that a i,這是怎麼回事兒?.原來是:我們先前

17、使用了插入命令i,至今并未用esc鍵返回命令方式。所以,輸入的所有字符都作為輸入文本予以顯示。按esc鍵,返回命令方式。利用x命令刪除錯(cuò)誤字符。然后,進(jìn)入插入方式,輸入正確字符。最后輸入如下所示的文本:tothe only woman that i love, for many year you have been mywwife i live you wich my life abd could not have picked much better.將你編輯的文本文件存盤。(利用 :wq 命令,或者 :x 命令)重新進(jìn)入vi編輯程序,編輯上面的文件。(如:$ vi myfile)在屏幕上見

18、到myfile文件的內(nèi)容。在屏幕底邊一行顯示出該文件的名稱、行數(shù)和字符個(gè)數(shù):“myfile”4 lines,130 characters它仍然有錯(cuò),需進(jìn)一步修改。將光標(biāo)移到第二行的year的r處。輸入a命令,添加字符s。按esc,回到命令方式。輸入命令10space,光標(biāo)移至何處? -光標(biāo)右移10個(gè)字符位置。利用取代命令r將mywwife改為my wife。將光標(biāo)移至第三行。輸入新行命令o(大寫字母),屏幕上有什麼變化? -光標(biāo)移至上一行(新加空行)的開頭。輸入新行的內(nèi)容: weve been through much together 此時(shí),vi處于哪種工作方式?按esc,回到命令方式。將光

19、標(biāo)移到第四行的live的i字母處。利用替換命令s將i改為o。在第四行的you之后添加單詞dearly。將wich改為with。修改后的文本是以下內(nèi)容:to the only woman that i love, for many years you have been my wifeweve been through much together i love you dearly with my life and could not have picked much better. 將該文件存盤,退出vi。重新編輯該文件。并將光標(biāo)移到最后一行的have的v字母處,使用d$命令將v至行尾的字符都

20、刪除?,F(xiàn)在想恢復(fù)17步的原狀,怎麼辦?(使用復(fù)原命令u)使用dd命令刪除第一行;將光標(biāo)移至through的u字母處,使用c(大寫字母)命令進(jìn)行修改,隨便輸入一串字符。將光標(biāo)移到下一行的開頭,執(zhí)行5x命令;然后執(zhí)行重復(fù)命令(.)。屏幕內(nèi)容亂了!現(xiàn)在想恢復(fù)17步的原狀,怎么辦?(不寫盤,強(qiáng)行退出vi)能用u或u命令恢復(fù)屏幕原狀嗎?三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux 系統(tǒng)四、實(shí)驗(yàn)報(bào)告要求 1. 寫出四種以上常用命令的使用參數(shù)功能。 2. 對(duì)本次實(shí)驗(yàn)寫多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)五:linux下c語言編程 實(shí)現(xiàn)階乘運(yùn)算與素?cái)?shù)求解一:實(shí)驗(yàn)?zāi)康?. 學(xué)習(xí)使用vi編

21、輯器建立、編輯、顯示以及加工處理c語言代碼。2. 掌握在linux下c語言的編譯與連接方法3. 掌握gcc的使用方法與關(guān)鍵參數(shù)二、實(shí)驗(yàn)內(nèi)容及步驟 (一)實(shí)驗(yàn)內(nèi)容1.使用vi編寫程序代碼2.完成任意數(shù)階乘運(yùn)算程序的編寫3.完成素?cái)?shù)求解序程序編寫(二)實(shí)驗(yàn)步驟1.進(jìn)入vi編輯器編寫所要的c語言程序代碼2. 使用gcc對(duì)所編譯代碼進(jìn)行編譯與連接,要求編譯與連接分開進(jìn)行。3. 運(yùn)行所編寫的程序并檢查運(yùn)算結(jié)果。三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux 系統(tǒng)四、實(shí)驗(yàn)報(bào)告要求 1. 寫出實(shí)現(xiàn)算法的流程和相對(duì)應(yīng)程序 2. 對(duì)本次實(shí)驗(yàn)寫多于300字以上的實(shí)驗(yàn)心得補(bǔ)充:階乘:素?cái)?shù)

22、定義:如果一個(gè)數(shù)的因數(shù)只有1和它自身,那么它就是素?cái)?shù)。 如何判斷一個(gè)數(shù)是否是素?cái)?shù)? 可以用2到(n-1)之間的數(shù)作為除數(shù),一個(gè)一個(gè)地去除n,如果都除不盡,n就為素?cái)?shù),如果其中有某個(gè)數(shù)能整除n,則n就不是素?cái)?shù)。gcc參數(shù)詳解gcc and g+分別是gnu的c & c+編譯器 gcc/g+在執(zhí)行編譯工作的時(shí)候,總共需要4步 1.預(yù)處理,生成.i的文件 2.將預(yù)處理后的文件不轉(zhuǎn)換成匯編語言,生成文件.s 3.有匯編變?yōu)槟繕?biāo)代碼(機(jī)器代碼)生成.o的文件 4.連接目標(biāo)代碼,生成可執(zhí)行程序 參數(shù)詳解 -x language filename 設(shè)定文件所使用的語言,使后綴名無效,對(duì)以后的多個(gè)有效.也就是

23、根 據(jù)約定c語言的后綴名稱是.c的,而c+的后綴名是.c或者.cpp,如果 你很個(gè)性,決定你的c代碼文件的后綴名是.pig 哈哈,那你就要用這 個(gè)參數(shù),這個(gè)參數(shù)對(duì)他后面的文件名都起作用,除非到了下一個(gè)參數(shù) 的使用。 可以使用的參數(shù)嗎有下面的這些 c, objective-c, c-header, c+, cpp-output, assembler, and assembler-with-cpp. 看到英文,應(yīng)該可以理解的。 例子用法: gcc -x c hello.pig -x none filename 關(guān)掉上一個(gè)選項(xiàng),也就是讓gcc根據(jù)文件名后綴,自動(dòng)識(shí)別文件類型 例子用法: gcc -x

24、 c hello.pig -x none hello2.c -c 只激活預(yù)處理,編譯,和匯編,也就是他只把程序做成obj文件 例子用法: gcc -c hello.c 他將生成.o的obj文件 -s 只激活預(yù)處理和編譯,就是指把文件編譯成為匯編代碼。 例子用法 gcc -s hello.c 他將生成.s的匯編代碼,你可以用文本編輯器察看 -e 只激活預(yù)處理,這個(gè)不生成文件,你需要把它重定向到一個(gè)輸出文件里 面. 例子用法: gcc -e hello.c pianoapan.txt gcc -e hello.c | more 慢慢看吧,一個(gè)hello word 也要與處理成800行的代碼 -o

25、制定目標(biāo)名稱,缺省的時(shí)候,gcc 編譯出來的文件是a.out,很難聽,如果 你和我有同感,改掉它,哈哈 例子用法 gcc -o hello.exe hello.c (哦,windows用習(xí)慣了) gcc -o hello.asm -s hello.c -pipe 使用管道代替編譯中臨時(shí)文件,在使用非gnu匯編工具的時(shí)候,可能有些問 題 gcc -pipe -o hello.exe hello.c -ansi 關(guān)閉gnu c中與ansi c不兼容的特性,激活ansi c的專有特性(包括禁止一 些asm inline typeof關(guān)鍵字,以及unix,vax等預(yù)處理宏, -fno-asm 此選項(xiàng)實(shí)

26、現(xiàn)ansi選項(xiàng)的功能的一部分,它禁止將asm,inline和typeof用作 關(guān)鍵字。 -fno-strict-prototype 只對(duì)g+起作用,使用這個(gè)選項(xiàng),g+將對(duì)不帶參數(shù)的函數(shù),都認(rèn)為是沒有顯式 的對(duì)參數(shù)的個(gè)數(shù)和類型說明,而不是沒有參數(shù). 而gcc無論是否使用這個(gè)參數(shù),都將對(duì)沒有帶參數(shù)的函數(shù),認(rèn)為城沒有顯式說 明的類型 -fthis-is-varialble 就是向傳統(tǒng)c+看齊,可以使用this當(dāng)一般變量使用. -fcond-mismatch 允許條件表達(dá)式的第二和第三參數(shù)類型不匹配,表達(dá)式的值將為void類型 -funsigned-char -fno-signed-char -fsi

27、gned-char -fno-unsigned-char 這四個(gè)參數(shù)是對(duì)char類型進(jìn)行設(shè)置,決定將char類型設(shè)置成unsigned char(前 兩個(gè)參數(shù))或者 signed char(后兩個(gè)參數(shù)) -include file 包含某個(gè)代碼,簡單來說,就是便以某個(gè)文件,需要另一個(gè)文件的時(shí)候,就可以 用它設(shè)定,功能就相當(dāng)于在代碼中使用#include 例子用法: gcc hello.c -include /root/pianopan.h -imacros file 將file文件的宏,擴(kuò)展到gcc/g+的輸入文件,宏定義本身并不出現(xiàn)在輸入文件 中 -dmacro 相當(dāng)于c語言中的#defin

28、e macro -dmacro=defn 相當(dāng)于c語言中的#define macro=defn -umacro 相當(dāng)于c語言中的#undef macro -undef 取消對(duì)任何非標(biāo)準(zhǔn)宏的定義 -idir 在你是用#includefile的時(shí)候,gcc/g+會(huì)先在當(dāng)前目錄查找你所制定的頭 文件,如果沒有找到,他回到缺省的頭文件目錄找,如果使用-i制定了目錄,他 回先在你所制定的目錄查找,然后再按常規(guī)的順序去找. 對(duì)于#include,gcc/g+會(huì)到-i制定的目錄查找,查找不到,然后將到系 統(tǒng)的缺省的頭文件目錄查找 -i- 就是取消前一個(gè)參數(shù)的功能,所以一般在-idir之后使用 -idiraf

29、ter dir 在-i的目錄里面查找失敗,講到這個(gè)目錄里面查找. -iprefix prefix -iwithprefix dir 一般一起使用,當(dāng)-i的目錄查找失敗,會(huì)到prefix+dir下查找 -nostdinc 使編譯器不再系統(tǒng)缺省的頭文件目錄里面找頭文件,一般和-i聯(lián)合使用,明確 限定頭文件的位置 -nostdin c+ 規(guī)定不在g+指定的標(biāo)準(zhǔn)路經(jīng)中搜索,但仍在其他路徑中搜索,.此選項(xiàng)在創(chuàng)建 libg+庫使用 -c 在預(yù)處理的時(shí)候,不刪除注釋信息,一般和-e使用,有時(shí)候分析程序,用這個(gè)很 方便的 -m 生成文件關(guān)聯(lián)的信息。包含目標(biāo)文件所依賴的所有源代碼 你可以用gcc -m hell

30、o.c來測試一下,很簡單。 -mm 和上面的那個(gè)一樣,但是它將忽略由#include造成的依賴關(guān)系。 -md 和-m相同,但是輸出將導(dǎo)入到.d的文件里面 -mmd 和-mm相同,但是輸出將導(dǎo)入到.d的文件里面 -wa,option 此選項(xiàng)傳遞option給匯編程序;如果option中間有逗號(hào),就將option分成多個(gè)選 項(xiàng),然后傳遞給會(huì)匯編程序 -wl.option 此選項(xiàng)傳遞option給連接程序;如果option中間有逗號(hào),就將option分成多個(gè)選 項(xiàng),然后傳遞給會(huì)連接程序. -llibrary 制定編譯的時(shí)候使用的庫 例子用法 gcc -lcurses hello.c 使用ncurse

31、s庫編譯程序 -ldir 制定編譯的時(shí)候,搜索庫的路徑。比如你自己的庫,可以用它制定目錄,不然 編譯器將只在標(biāo)準(zhǔn)庫的目錄找。這個(gè)dir就是目錄的名稱。 -o0 -o1 -o2 -o3 編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別,-o0表示沒有優(yōu)化,-o1為缺省值,-o3優(yōu)化級(jí)別最 高 -g 只是編譯器,在編譯的時(shí)候,產(chǎn)生條是信息。 -gstabs 此選項(xiàng)以stabs格式聲稱調(diào)試信息,但是不包括gdb調(diào)試信息. -gstabs+ 此選項(xiàng)以stabs格式聲稱調(diào)試信息,并且包含僅供gdb使用的額外調(diào)試信息. -ggdb 此選項(xiàng)將盡可能的生成gdb的可以使用的調(diào)試信息. 實(shí)驗(yàn)六:gun make管理項(xiàng)目與gdb程序調(diào)

32、試一:實(shí)驗(yàn)?zāi)康?掌握makefile的編寫方法與基本編寫規(guī)則2掌握gdb調(diào)試程序的基本方法與技巧二、實(shí)驗(yàn)內(nèi)容及步驟 1. 編寫一個(gè)簡單的makefile并按makefile的規(guī)則生成makefile中指定的可執(zhí)行文件。a 參考程序/*calc.c*/#include calc.h#include float calcsquare(float fwidth, float flength)return (fwidth * flength);float calccircle(float radius)return (3.14 * radius * radius);/*calc.h*/#ifndef

33、_calc_h_#define _calc_h_float calcsquare(float fwidht, float flength);float calccircle(float fradius);#endif/*main.c*/#include inputdata.h#include outputdata.h#include calc.hint main()float fwidth;float flength;float fradius;float fresult; fwidth = getwidth();flength = getlength();outputsquare(calcs

34、quare(fwidth, flength);outputcircle(calccircle(fradius);return 0;/*inputdata.c*/#include #include inputdata.hfloat getwidth()float fwidth = 0;printf(please input the width of square:);scanf(%f,&fwidth);return fwidth;float getlength()float flength = 0;printf(please input the length of square:);scanf(

35、%f,&flength);return flength;float getradius()float fradius = 0;printf(please input the radius of cirlce:);scanf(%f,&fradius);return fradius;/*outputdata.h*/#ifndef _outputdata_h_#define _outputdata_h_void outputsquare(float area);void outputcircle(float area);#endif/*outputdata.c*/#include #include

36、outputdata.hvoid outputsquare(float area)printf(the area of square is %fn,area);void outputcircle(float area)printf(the area of circle is %fn,area);/*inputdata.h*/#ifndef _inputdata_h_#define _inputdata_h_float getwidth();float getlength();float getradiu();#endifb. 參考makefilecalculate: main.o calc.o

37、 outputdata.o inputdata.ogcc -g -o calculate main.o outputdata.o inputdata.o calc.omain.o: main.c inputdata.h outputdata.hgcc -g -o main.o -c main.cinputdata.o: inputdata.c inputdata.hgcc -g -o inputdata.o -c inputdata.coutputdata.o: outputdata.c outputdata.hgcc -g -o outputdata.o -c outputdata.ccal

38、c.o: calc.c calc.hgcc -g -o calc.o -c calc.cclean:rm *.o2. gdb調(diào)試程序練習(xí),通過調(diào)試完成以下程序的改錯(cuò)/* * 該程序功能:* 將輸入的十進(jìn)制整數(shù)n通過函數(shù)dtoh轉(zhuǎn)換為十六進(jìn)制數(shù),并將轉(zhuǎn)換結(jié)果以字符串形式輸出。* 例如:輸入十進(jìn)制數(shù)79,將輸出十六進(jìn)制4f。*/#include #include char trans(int x)int res;if(x 10) res = 0 + x;else /*1*/res = a + x ;return res; int dtoh(int n,char *str)int i = 0;whi

39、le(n != 0)stri = trans(n % 16); /*2*/n %= 16;i+;return i;int main()int i,k,n;char str128;scanf(%d, &n);k = dtoh(n, str);printf(%dd = ,n);for (i = 0; i k; i+) printf(%c, strk - i);printf(hn);return 0;三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux 系統(tǒng)四、實(shí)驗(yàn)報(bào)告要求1. 完成300makefile編寫心得體會(huì)2. 完成300gdb調(diào)試程序的心得體會(huì)并寫出正確程序?qū)嶒?yàn)七:

40、linux shell編程一:實(shí)驗(yàn)?zāi)康?熟悉shell常用命令與相關(guān)編程語法2掌握shell編程基本方法與規(guī)則二、實(shí)驗(yàn)內(nèi)容及步驟 1 文件處理程序的編寫,對(duì)書本67頁的程序進(jìn)行編寫且理解他所實(shí)現(xiàn)的方法2利用函數(shù)測試目錄與文件是否存在。程序參考68頁3日志文件處理(選做)三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux 系統(tǒng)四、實(shí)驗(yàn)報(bào)告要求1 劃出出實(shí)驗(yàn)內(nèi)容1,2的實(shí)現(xiàn)流程圖2寫300字shell程序編寫心得體會(huì)實(shí)驗(yàn)八:arm+linux的嵌入式開發(fā)工具鏈的建立一:實(shí)驗(yàn)?zāi)康?熟悉arm+linuxarm+linux的嵌入式開發(fā)工具鏈所需所有軟件2掌握arm+linuxa

41、rm+linux的嵌入式開發(fā)工具鏈與相關(guān)軟件的編譯方法與配置參數(shù)選擇二、實(shí)驗(yàn)內(nèi)容及步驟實(shí)驗(yàn)內(nèi)容:1. 下載源文件、補(bǔ)丁和建立編譯的目錄2. 建立內(nèi)核頭文件3. 建立二進(jìn)制工具(binutils)4. 建立初始編譯器(bootstrap gcc)5. 建立c庫(glibc)6. 建立全套編譯器(full gcc)7. 驗(yàn)證所配置工具鏈實(shí)驗(yàn)步驟:下載源文件、補(bǔ)丁和建立編譯的目錄1. 選定軟件版本號(hào)我選的各個(gè)軟件的版本是:linux-2.4.21+rmk1binutils-2.11.2gcc-2.95.3glibc-2.2.4glibc-linuxthreads-2.2.4gcc-2.95.3 的補(bǔ)

42、丁2. 建立工作目錄首先,我們建立幾個(gè)用來工作的目錄:在你的用戶目錄,如在上課中用的目錄為hgm,因此用戶目錄為 /home/hgm,先建立一個(gè)項(xiàng)目目錄embedded-system。#pwd/home/hgm#mkdir embedded-system再在這個(gè)項(xiàng)目目錄 embedded-system 下建立以下幾個(gè)目錄 setup-dir:存放下載的壓縮包src-dir: 放你下載的 binutils、gcc 和 glibc 的源代碼和用來編譯這些源代碼的目錄。build-dir: 編譯目錄kernel:存放你的內(nèi)核源代碼和內(nèi)核補(bǔ)丁tool-chain: 存放編譯好的交叉編譯工具和庫文件pr

43、ogram: 存放編寫好的程序doc:存放說明文檔與腳本文件#cd embedded-system#mkdir setup-dir src-dir kernel build-dir tool-chain program doc3. 輸出和環(huán)境變量我們輸出如下的環(huán)境變量方便我們編譯。#pwd/home/hgm/embedded-system/bupals# cd ./doc#mkdir scripts#vi hjbl輸入以下內(nèi)容export prjroot=/home/hgm/ embedded-system export target=arm-linuxexport prefix=$prjro

44、ot/tool-chainexport target_prefix=$prefix/$targetexport path=$prefix/bin:$path 如果你不慣用環(huán)境變量的,你可以直接用絕對(duì)或相對(duì)路徑。我如果不用環(huán)境變量,一般都用絕對(duì)路徑,相對(duì)路徑有時(shí)會(huì)失敗。環(huán)境變量也可以定義在.bashrc文件中,這樣當(dāng)你logout或換了控制臺(tái)時(shí),就不用老是export這些變量了。然后執(zhí)行#.(這里有個(gè)空格,大家一定要注意) hjbl 4. 建立編譯目錄為了把源碼和編譯時(shí)生成的文件分開,一般的編譯工作不在的源碼目錄中,要另建一個(gè)目錄來專門用于編譯。用以下的命令來建立編譯你下載的binutils、g

45、cc和glibc的源代碼的目錄。#cd $prjroot/build-tools#mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patchbuild-binutils-編譯binutils的目錄build-boot-gcc-編譯gcc 啟動(dòng)部分的目錄build-glibc-編譯glibc的目錄build-gcc-編譯gcc 全部的目錄gcc-patch-放gcc的補(bǔ)丁的目錄: 建立內(nèi)核頭文件進(jìn)入kernel 目錄:#cd $prjroot /kernel解開內(nèi)核源代碼#tar -xzvf ./setup-dir/li

46、nux-2.4.21.tar.gz給 linux 內(nèi)核打上你的補(bǔ)丁首先解壓縮補(bǔ)丁#gunzip ./setup-dir/patch-2.4.21-rmk1.gz#cd linux-2.4.21#patch -p1 ./patch-2.4.21-rmk1mak編譯內(nèi)核生成頭文件#make arch=arm cross_compile=arm-linux- menuconfig#make dep你也可以用 config 和 xconfig 來代替 menuconfig,但這樣用可能會(huì)沒有設(shè)置某些配置文件選項(xiàng)和沒有生成下面編譯所需的頭文件。推薦大家用 make menuconfig,這也是內(nèi)核開發(fā)人

47、員用的最多的配置方法。配置完退出并保存,檢查一下的內(nèi)核目錄中的 include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,這是編譯 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也說明了你生成了正確的頭文件。為了能正常編譯內(nèi)核,還要建立幾個(gè)正確的鏈接#cd include#ln -s asm-arm asm#cd asm#ln -s arch-epxa arch#ln -s proc-armv proc接下來為你的交叉編譯環(huán)境建立你的內(nèi)核頭文件的鏈接#mkdir -p $target_prefix

48、/include#ln -s $prjroot/kernel/linux-2.4.21/include/linux $target_prefix/include/linux#ln -s $prjroot/kernel/linux-2.4.21/include/asm-arm $target_prefix/include/asm也可以把 linux 內(nèi)核頭文件拷貝過來用$mkdir -p $target_prefix/include#cp -r $prjroot/kernel/linux-2.4.21/include/linux $target_prefix/include/linux#cp -

49、r $prjroot/kernel/linux-2.4.21/include/asm-arm $target_prefix/include/asm : 建立二進(jìn)制工具(binutils)binutils是一些二進(jìn)制工具的集合,其中包含了我們常用到的匯編器as和連接器ld。首先,解壓binutils源文件。#cd $prjroot/src-dr#tar -xvjf ./set-dir/binutils-2.11.2.tar.bz2然后進(jìn)入build-binutils目錄配置和編譯binutils。#cd $prjroot/build-dir/build-binutils#././src-dir/binutils-2.11.2/configure -target=$target -prefix=$prefix-target 選項(xiàng)是指出我們生成的是 arm-linux 的工具,-prefix 是指出我們可執(zhí)行文件安裝的位置。會(huì)出現(xiàn)很多 check,最后產(chǎn)生 makefile 文件。有了 makefile 后,我們來編譯并安裝 binutils,命令很簡單。#make#ma

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論