![嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/10/18d7aa93-5d56-46b3-8442-4856cf46359d/18d7aa93-5d56-46b3-8442-4856cf46359d1.gif)
![嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/10/18d7aa93-5d56-46b3-8442-4856cf46359d/18d7aa93-5d56-46b3-8442-4856cf46359d2.gif)
![嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/10/18d7aa93-5d56-46b3-8442-4856cf46359d/18d7aa93-5d56-46b3-8442-4856cf46359d3.gif)
![嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/10/18d7aa93-5d56-46b3-8442-4856cf46359d/18d7aa93-5d56-46b3-8442-4856cf46359d4.gif)
![嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/10/18d7aa93-5d56-46b3-8442-4856cf46359d/18d7aa93-5d56-46b3-8442-4856cf46359d5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)韓桂明 趙志鵬 張錕目錄實(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語(yǔ)言編程 實(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的嵌入式開(kāi)發(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 雙擊安裝程序后來(lái)到vmware workstation安裝向?qū)Ы缑?。b. 選擇安裝類型c. 我選擇將vmware workstation安裝在默認(rèn)的路徑下d. 配置快捷方式e. 確定無(wú)誤后單擊“install”f. 安裝ingg. 輸入產(chǎn)品序列號(hào)h. 安裝完成i.重啟計(jì)算機(jī)j. 安裝完成k. 在虛擬機(jī)窗口規(guī)劃依次展開(kāi)“文件”“新建”虛擬主機(jī)l. 出現(xiàn)“新建虛擬機(jī)向?qū)А贝翱趍. 建議選擇“自定義”方便后面配置虛擬機(jī)內(nèi)存,如果你的內(nèi)存夠大(512m以上),
4、可以選擇“典型”。說(shuō)明一下,這些配置在安裝好虛擬機(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)用軟件來(lái)說(shuō)已經(jīng)足夠了。r. 安裝xp,設(shè)置虛擬機(jī)winxp的屬性,鼠標(biāo)點(diǎn)擊一下虛擬機(jī)winxps. 點(diǎn)擊setting后可得以下界面,這里就
5、可以選擇所用的cd-rom類型,找到xp映象文件。 t. 開(kāi)始安裝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)寫(xiě)多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)二:linux操作系統(tǒng)的配置與安裝一:實(shí)驗(yàn)?zāi)康?掌握如何在wmware中安裝linux;2掌握如何配置符合自己需要linux系統(tǒng); 3熟練掌握l(shuí)inux兩種安裝模式。二、實(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ī)劃依次展開(kāi)“文件”“新建”虛擬主機(jī) b. 選擇linux安裝類別,在linux安裝中有兩種安裝模式text模式與圖形模式c. 圖形模式下安裝linux,建議跳過(guò)cd檢測(cè),cd檢測(cè)花比較長(zhǎng)的時(shí)間d. 選擇安裝過(guò)程的安裝語(yǔ)言e. 選擇linux安裝類型f. 選擇磁盤分區(qū)模式,建議大家使用自動(dòng)分區(qū)g. 配置引導(dǎo)裝載程序h. 配置網(wǎng)絡(luò)i. 配置防火墻j. 選擇系統(tǒng)所能支持的語(yǔ)言k. 設(shè)置根口令,注意根口令是不能隨意給普通用戶知道的。l. 選擇軟件包組m. 安裝程序開(kāi)始安裝剛才所配置的
7、軟件包n. 安裝過(guò)程中更換光盤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)寫(xiě)多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)三:linux常用操作指令一:實(shí)驗(yàn)?zāi)康?了解linux下的字符界面;2掌握l(shuí)inux下常用命令; 3熟練掌握增加、刪除用戶和組方法。二、實(shí)驗(yàn)內(nèi)容(一). 了解linux中的基本命令的
8、語(yǔ)法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 庫(kù)文件存放地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ì)路徑,以/目錄開(kāi)始的路徑表示絕對(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)建目錄樹(shù) 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.查看自己是誰(shuí) 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. 寫(xiě)出四種以上常用命令的使用參數(shù)功能。 2. 對(duì)本次實(shí)驗(yàn)寫(xiě)多于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)容寫(xiě)到你編輯的文件中,退出編輯器,回到unix shell下。:zz 僅當(dāng)作過(guò)修改時(shí)才將緩沖區(qū)內(nèi)容寫(xiě)到文件上。:x 與 :zz 相同。:q! 強(qiáng)行退出vi。感嘆號(hào)(!)告訴vi,無(wú)條件退出,丟棄緩沖區(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,這是怎麼回事兒?.原來(lá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)在屏幕上見(jiàn)
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(大寫(xiě)字母),屏幕上有什麼變化? -光標(biāo)移至上一行(新加空行)的開(kāi)頭。輸入新行的內(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(大寫(xiě)字母)命令進(jìn)行修改,隨便輸入一串字符。將光標(biāo)移到下一行的開(kāi)頭,執(zhí)行5x命令;然后執(zhí)行重復(fù)命令(.)。屏幕內(nèi)容亂了!現(xiàn)在想恢復(fù)17步的原狀,怎么辦?(不寫(xiě)盤,強(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. 寫(xiě)出四種以上常用命令的使用參數(shù)功能。 2. 對(duì)本次實(shí)驗(yàn)寫(xiě)多于300字以上的實(shí)驗(yàn)心得實(shí)驗(yàn)五:linux下c語(yǔ)言編程 實(shí)現(xiàn)階乘運(yùn)算與素?cái)?shù)求解一:實(shí)驗(yàn)?zāi)康?. 學(xué)習(xí)使用vi編
21、輯器建立、編輯、顯示以及加工處理c語(yǔ)言代碼。2. 掌握在linux下c語(yǔ)言的編譯與連接方法3. 掌握gcc的使用方法與關(guān)鍵參數(shù)二、實(shí)驗(yàn)內(nèi)容及步驟 (一)實(shí)驗(yàn)內(nèi)容1.使用vi編寫(xiě)程序代碼2.完成任意數(shù)階乘運(yùn)算程序的編寫(xiě)3.完成素?cái)?shù)求解序程序編寫(xiě)(二)實(shí)驗(yàn)步驟1.進(jìn)入vi編輯器編寫(xiě)所要的c語(yǔ)言程序代碼2. 使用gcc對(duì)所編譯代碼進(jìn)行編譯與連接,要求編譯與連接分開(kāi)進(jìn)行。3. 運(yùn)行所編寫(xiě)的程序并檢查運(yùn)算結(jié)果。三、實(shí)驗(yàn)儀器和設(shè)備 pc機(jī)、vmware虛擬機(jī)和red hat linux 系統(tǒng)四、實(shí)驗(yàn)報(bào)告要求 1. 寫(xiě)出實(shí)現(xiàn)算法的流程和相對(duì)應(yīng)程序 2. 對(duì)本次實(shí)驗(yàn)寫(xiě)多于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)換成匯編語(yǔ)言,生成文件.s 3.有匯編變?yōu)槟繕?biāo)代碼(機(jī)器代碼)生成.o的文件 4.連接目標(biāo)代碼,生成可執(zhí)行程序 參數(shù)詳解 -x language filename 設(shè)定文件所使用的語(yǔ)言,使后綴名無(wú)效,對(duì)以后的多個(gè)有效.也就是
23、根 據(jù)約定c語(yǔ)言的后綴名稱是.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 編譯出來(lái)的文件是a.out,很難聽(tīng),如果 你和我有同感,改掉它,哈哈 例子用法 gcc -o hello.exe hello.c (哦,windows用習(xí)慣了) gcc -o hello.asm -s hello.c -pipe 使用管道代替編譯中臨時(shí)文件,在使用非gnu匯編工具的時(shí)候,可能有些問(wèn) 題 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)為是沒(méi)有顯式 的對(duì)參數(shù)的個(gè)數(shù)和類型說(shuō)明,而不是沒(méi)有參數(shù). 而gcc無(wú)論是否使用這個(gè)參數(shù),都將對(duì)沒(méi)有帶參數(shù)的函數(shù),認(rèn)為城沒(méi)有顯式說(shuō) 明的類型 -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è)代碼,簡(jiǎn)單來(lái)說(shuō),就是便以某個(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語(yǔ)言中的#defin
28、e macro -dmacro=defn 相當(dāng)于c語(yǔ)言中的#define macro=defn -umacro 相當(dāng)于c語(yǔ)言中的#undef macro -undef 取消對(duì)任何非標(biāo)準(zhǔn)宏的定義 -idir 在你是用#includefile的時(shí)候,gcc/g+會(huì)先在當(dāng)前目錄查找你所制定的頭 文件,如果沒(méi)有找到,他回到缺省的頭文件目錄找,如果使用-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+庫(kù)使用 -c 在預(yù)處理的時(shí)候,不刪除注釋信息,一般和-e使用,有時(shí)候分析程序,用這個(gè)很 方便的 -m 生成文件關(guān)聯(lián)的信息。包含目標(biāo)文件所依賴的所有源代碼 你可以用gcc -m hell
30、o.c來(lái)測(cè)試一下,很簡(jiǎn)單。 -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í)候使用的庫(kù) 例子用法 gcc -lcurses hello.c 使用ncurse
31、s庫(kù)編譯程序 -ldir 制定編譯的時(shí)候,搜索庫(kù)的路徑。比如你自己的庫(kù),可以用它制定目錄,不然 編譯器將只在標(biāo)準(zhǔn)庫(kù)的目錄找。這個(gè)dir就是目錄的名稱。 -o0 -o1 -o2 -o3 編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別,-o0表示沒(méi)有優(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的編寫(xiě)方法與基本編寫(xiě)規(guī)則2掌握gdb調(diào)試程序的基本方法與技巧二、實(shí)驗(yàn)內(nèi)容及步驟 1. 編寫(xiě)一個(gè)簡(jiǎn)單的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í),通過(guò)調(diào)試完成以下程序的改錯(cuò)/* * 該程序功能:* 將輸入的十進(jìn)制整數(shù)n通過(guò)函數(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編寫(xiě)心得體會(huì)2. 完成300gdb調(diào)試程序的心得體會(huì)并寫(xiě)出正確程序?qū)嶒?yàn)七:
40、linux shell編程一:實(shí)驗(yàn)?zāi)康?熟悉shell常用命令與相關(guān)編程語(yǔ)法2掌握shell編程基本方法與規(guī)則二、實(shí)驗(yàn)內(nèi)容及步驟 1 文件處理程序的編寫(xiě),對(duì)書(shū)本67頁(yè)的程序進(jìn)行編寫(xiě)且理解他所實(shí)現(xiàn)的方法2利用函數(shù)測(cè)試目錄與文件是否存在。程序參考68頁(yè)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寫(xiě)300字shell程序編寫(xiě)心得體會(huì)實(shí)驗(yàn)八:arm+linux的嵌入式開(kāi)發(fā)工具鏈的建立一:實(shí)驗(yàn)?zāi)康?熟悉arm+linuxarm+linux的嵌入式開(kāi)發(fā)工具鏈所需所有軟件2掌握arm+linuxa
41、rm+linux的嵌入式開(kāi)發(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庫(kù)(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è)用來(lái)工作的目錄:在你的用戶目錄,如在上課中用的目錄為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 的源代碼和用來(lái)編譯這些源代碼的目錄。build-dir: 編譯目錄kernel:存放你的內(nèi)核源代碼和內(nèi)核補(bǔ)丁tool-chain: 存放編譯好的交叉編譯工具和庫(kù)文件pr
43、ogram: 存放編寫(xiě)好的程序doc:存放說(shuō)明文檔與腳本文件#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í)生成的文件分開(kāi),一般的編譯工作不在的源碼目錄中,要另建一個(gè)目錄來(lái)專門用于編譯。用以下的命令來(lái)建立編譯你下載的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解開(kāi)內(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 來(lái)代替 menuconfig,但這樣用可能會(huì)沒(méi)有設(shè)置某些配置文件選項(xiàng)和沒(méi)有生成下面編譯所需的頭文件。推薦大家用 make menuconfig,這也是內(nèi)核開(kāi)發(fā)人
47、員用的最多的配置方法。配置完退出并保存,檢查一下的內(nèi)核目錄中的 include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,這是編譯 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也說(shuō)明了你生成了正確的頭文件。為了能正常編譯內(nèi)核,還要建立幾個(gè)正確的鏈接#cd include#ln -s asm-arm asm#cd asm#ln -s arch-epxa arch#ln -s proc-armv proc接下來(lái)為你的交叉編譯環(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)核頭文件拷貝過(guò)來(lá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 后,我們來(lái)編譯并安裝 binutils,命令很簡(jiǎn)單。#make#ma
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國(guó)家課程:《機(jī)械制造裝備設(shè)計(jì)》第一章
- 2025-2030全球管式爐行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球工業(yè)應(yīng)用移動(dòng)機(jī)器人行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)塑料3D打印長(zhǎng)絲行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球工業(yè)膠囊填充機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)微米級(jí)氧化鋯行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025農(nóng)民工標(biāo)準(zhǔn)的勞動(dòng)合同范本
- 2025單位無(wú)息借款合同「」
- 輕量級(jí)服務(wù)器租賃合同范本
- 2025外箱采購(gòu)合同范本范文
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 《敏捷項(xiàng)目管理》課件
- 統(tǒng)編版(2024新版)七年級(jí)上學(xué)期道德與法治期末綜合測(cè)試卷(含答案)
- 黑龍江省哈爾濱市2024屆中考數(shù)學(xué)試卷(含答案)
- 前程無(wú)憂測(cè)評(píng)題庫(kù)及答案
- 高三日語(yǔ)一輪復(fù)習(xí)助詞「と」的用法課件
- 物業(yè)管理服務(wù)房屋及公用設(shè)施維修養(yǎng)護(hù)方案
- 五年級(jí)上冊(cè)小數(shù)遞等式計(jì)算200道及答案
- 世界老年人跌倒的預(yù)防和管理指南解讀及跌倒應(yīng)急處理-
- 帶拼音生字本模板(可A4打印)
- 超高大截面框架柱成型質(zhì)量控制
評(píng)論
0/150
提交評(píng)論