1.實驗任務
1) 熟悉并基本掌握GCC的基礎知識
2) 為自己的工程編寫makefile檔案
2.實驗内容
2.1 gcc 執行過程
2.1.0 準備工作
Ubuntu中GCC的安裝
sudo apt-get update /*更新源位址*/
sudo apt-get install gcc /*安裝GCC*/
注:謹慎選擇可用源,注意源是否支援目前linux版本
2.1.1 實驗 一
建立一個名稱為 1的c檔案
sudo gedit 1.c
鍵入簡單的C語言程式
預編譯過程
處理宏定義和include,并做文法檢查。
注:
| 表示管道,處理經由前面一個指令傳出的正确輸出資訊,也就是傳遞cat的結果;wc -l 統計該檔案的行數。
cat指令連接配接檔案并列印到标準輸出裝置上,cat經常用來顯示檔案的内容
編譯過程
這個階段,生成彙編代碼并進行文法檢查。
彙編過程
這個階段,生成目标代碼。
此過程生成ELF格式的目标代碼。
注:as 指令GNU組織推出的一款彙編語言編譯器,作用是彙編制定的彙編檔案
file指令用來探測給定檔案的類型。file指令對檔案的檢查分為檔案系統、魔法幻數檢查和語言檢查3個過程
連結過程:
生成可執行代碼。連結分為兩種,一種是靜态連結,另外一種是動态連結。使用靜态連結的好處是,依賴的動态連結庫較少,對動态連結庫的版本不會很敏感,具有較好的相容性;缺點是生成的程式比較大。使用動态連結的好處是,生成的程式比較小,占用較少的記憶體。
程式運作
2.1.2 實驗二
建立 hello.c
執行情況如下:
注:結果中出現的Warning是因為在修改系統檔案時我們不能使用sudo指令去修改,必須使用系統内置的管理者權限,即最簡單的方法是使用gksudo指令啟用root編輯,當然你可以把的賬戶權限添加到管理者權限中也是可以的
2.2 編寫makefile檔案
2.2.1 實驗三
首先建立檔案
包括makefile sub1.c sub2.c main.c cmx.h
然後編輯各個檔案的内容:
makefile檔案
注:rm -f為強制删除檔案或目錄
main.c檔案
sub1.c檔案
sub2.c檔案
頭檔案cmx.h
執行make,預設在目前路徑下查找makefile檔案并執行。如下圖所示
注:make需要另行安裝
(很尴尬的事……sub2.c裡面忘記換行……emmmmmm……)
3 實驗心得
GCC指令
文法
gcc(選項)(參數)
選項
-o:指定生成的輸出檔案;
-E:僅執行編譯預處理;
-S:将C代碼轉換為彙編代碼;
-wall:顯示警告資訊;
-c:僅執行編譯操作,不進行連接配接操作。
參數
C源檔案:指定C語言源代碼檔案。
4.引用連結
https://blog.csdn.net/qq_33478897/article/details/77456537
http://man.linuxde.net
https://blog.csdn.net/shenquanyue/article/details/79699466
http://blog.sina.com.cn/s/blog_675f93ad0102vc2h.html