



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)計學(xué)院嵌入式操作系統(tǒng)實驗報告實驗三 GCC編譯程序班級 嵌入班 姓名 122208204120羅航 l 實驗?zāi)康模壕帉懸粋€應(yīng)用程序,使用gcc進行編譯,并分別使用-o,-g,-static,-O2等選項,了解這些選項的作用。l 實驗設(shè)備:軟件:安裝了Fedora 11的vmware虛擬機。 硬件:PC機一臺。l 背景知識:1. gcc的概念: GCC(GNU Compiler Collection,GNU 編譯器套裝),是一套由 GNU 開發(fā)的編程語言編譯器。GCC 原名為 GNU C 語言編譯器,因為它原本只能處理 C 語言。GCC 很快地擴展,變得可處理 C+。之后也變得可處理 Fort
2、ran、Pascal、Objective-C、Java, 以及 Ada 與其他語言。我們使用的 gcc 命令主要是用于處理 c 語言程序。 2. gcc的執(zhí)行過程: 雖然我們稱 Gcc 是 C 語言的編譯器,但使用 gcc 由 C 語言源代碼文件生成可執(zhí)行文件的過程不僅僅是編譯的過程,而是要經(jīng)歷四個相互關(guān)聯(lián)的步驟預(yù)處理(也稱預(yù)編譯,Preprocessing)、編譯(Compilation)、匯編(Assembly)和鏈接(Linking)。 命令 gcc 首先調(diào)用 cpp 進行預(yù)處理,在預(yù)處理過程中,對源代碼文件中的文件包含(include)、預(yù)編譯語句(如宏定義 define 等)進行分析
3、。接著調(diào)用 cc1 進行編譯,這個階段根據(jù)輸入文件生成以.o 為后綴的目標(biāo)文件。匯編過程是針對匯編語言的步驟,調(diào)用 as 進行工作,一般來講,.S 為后綴的匯編語言源代碼文件和匯編、.s 為后綴的匯編語言文件經(jīng)過預(yù)編譯和匯編之后都生成以.o 為后綴的目標(biāo)文件。當(dāng)所有的目標(biāo)文件都生成之后,gcc 就調(diào)用 ld 來完成最后的關(guān)鍵性工作,這個階段就是連接。在連接階段,所有的目標(biāo)文件被安排在可執(zhí)行程序中的恰當(dāng)?shù)奈恢茫瑫r,該程序所調(diào)用到的庫函數(shù)也從各自所在的庫中連到合適的地方。 l 實驗步驟:1. 先用 vi 編輯 hello.c 文件,內(nèi)容如圖所示。2. gcc 命令的一般格式為:gcc 選項 要編
4、譯的文件 選項目標(biāo)文件。 下面使用命令 gcc hello.c o hello,編譯 hello.c,并生成可執(zhí)行文件 hello,并使用命令./hello來執(zhí)行。要求截圖:注意: 上面的命令將.c文件生成了可執(zhí)行文件,實際上是將預(yù)處理、編譯、匯編、連接一步完成,下面我們將介紹四個流程分別做了什么工作。3. 使用-E 選項,執(zhí)行預(yù)處理工作。使用命令 gcc -E hello.c -o hello.i 對 hello.c 進行預(yù)處理,生成文件 hello.i。要求截圖:使用命令 cat hello.i 查看 hello.i 文件的內(nèi)容,可以看到頭文件stdio.h 中包含的內(nèi)容替換掉了原先代碼中
5、的#include <stdio.h>。4. 使用-S 選項,執(zhí)行編譯處理工作。使用命令 gcc -S hello.i -o hello.s 對 hello.i進行編譯,生成匯編文件 hello.s。要求截圖:使用命令 cat hello.s 查看 hello.s 文件的內(nèi)容,可以看到原來的c 語言代碼已被轉(zhuǎn)化為匯編代碼。5. 使用-c 選項,執(zhí)行編譯工作。使用命令 gcc -c hello.s -o hello.o 對 hello.s 進行匯編,生成目標(biāo)文件 hello.o。要求截圖:6. 使用命令 gcc hello.o -o hello 將 hello.o 鏈接庫,生成可執(zhí)行
6、文件 hello,并使用命令./hello來執(zhí)行。要求截圖:以上四個步驟就對應(yīng)了 gcc 執(zhí)行過程的四個基本步驟,下面我們來看看 gcc其他一些重要的選項。7. 使用-static 選項,靜態(tài)鏈接庫。使用命令 gcc hello.c -o hello 和 gcc hello.c -o -static hello1 分別生成兩個可執(zhí)行文件 hello和 hello1。第一個文件 hello 是不加-static 選項,默認是鏈接動態(tài)庫生成的,利用命令ls l(注l是小字字母l)比較鏈接動態(tài)庫生成的文件 hello 和鏈接靜態(tài)庫生成的文件 hello1 的大小。要求截圖:8. 使用-g 選項,在可執(zhí)行程序中包含標(biāo)準(zhǔn)調(diào)試信息。使用命令 gcc -g hello.c -o hello2 生成包含調(diào)試信息的文件 hello2,帶有調(diào)試信息的可執(zhí)行文件可以使用 gdb 調(diào)試器進行調(diào)試。要求截圖:9. 使用-D 選項,在編譯時進行宏定義。使用命令 gcc -DLINUX hello.c -o hello3生成定義了宏 LINUX 的的可執(zhí)行文件 hello3, 將 hello3 和原可執(zhí)行文件 hello
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國智能按摩椅行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國無脂酸奶行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國數(shù)據(jù)中心物理安全行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國收藏品行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國捕魚、狩獵和誘捕行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國搶修工程車行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國戶外自熱食品市場規(guī)模預(yù)測及投資前景研究報告
- 2025至2030中國建筑行業(yè)市場發(fā)展現(xiàn)狀及消費需求及有效策略與實施路徑評估報告
- 2025至2030中國度假租賃平臺行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國廢舊木材行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 煤礦質(zhì)量標(biāo)準(zhǔn)化建設(shè)實施方案
- 2025盤錦輔警考試題庫
- 作物栽培學(xué)知到課后答案智慧樹章節(jié)測試答案2025年春中國農(nóng)業(yè)大學(xué)
- 甘肅蘭州歷年中考語文文言文閱讀試題36篇(含答案與翻譯)(截至2024年)
- 2025年春季安全教育主題班會教育記錄
- 2025年執(zhí)業(yè)藥師繼續(xù)教育試題題庫和參考答案(完整版)
- 《中醫(yī)養(yǎng)生保健服務(wù)(非醫(yī)療)技術(shù)操作規(guī)范-砭術(shù)》-公示稿
- 《企業(yè)信息安全培訓(xùn)課件》
- 職業(yè)學(xué)院學(xué)生轉(zhuǎn)專業(yè)申請表
- 2025年全國安全生產(chǎn)月安全知識競賽題庫及答案(共280題)
- 曹楊二中自招數(shù)學(xué)試卷
評論
0/150
提交評論