天天看點

【Linux核心實驗】 gcc與make使用

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語言程式

【Linux核心實驗】 gcc與make使用

預編譯過程 

處理宏定義和include,并做文法檢查。

注:  

| 表示管道,處理經由前面一個指令傳出的正确輸出資訊,也就是傳遞cat的結果;wc -l 統計該檔案的行數。

cat指令連接配接檔案并列印到标準輸出裝置上,cat經常用來顯示檔案的内容

【Linux核心實驗】 gcc與make使用

編譯過程 

這個階段,生成彙編代碼并進行文法檢查。

【Linux核心實驗】 gcc與make使用

彙編過程 

這個階段,生成目标代碼。 

此過程生成ELF格式的目标代碼。 

注:as 指令GNU組織推出的一款彙編語言編譯器,作用是彙編制定的彙編檔案

file指令用來探測給定檔案的類型。file指令對檔案的檢查分為檔案系統、魔法幻數檢查和語言檢查3個過程

【Linux核心實驗】 gcc與make使用

連結過程:

生成可執行代碼。連結分為兩種,一種是靜态連結,另外一種是動态連結。使用靜态連結的好處是,依賴的動态連結庫較少,對動态連結庫的版本不會很敏感,具有較好的相容性;缺點是生成的程式比較大。使用動态連結的好處是,生成的程式比較小,占用較少的記憶體。 

【Linux核心實驗】 gcc與make使用

程式運作   

【Linux核心實驗】 gcc與make使用

2.1.2 實驗二

建立 hello.c 

【Linux核心實驗】 gcc與make使用

執行情況如下: 

注:結果中出現的Warning是因為在修改系統檔案時我們不能使用sudo指令去修改,必須使用系統内置的管理者權限,即最簡單的方法是使用gksudo指令啟用root編輯,當然你可以把的賬戶權限添加到管理者權限中也是可以的

【Linux核心實驗】 gcc與make使用

2.2  編寫makefile檔案 

2.2.1 實驗三

首先建立檔案 

包括makefile sub1.c sub2.c main.c cmx.h

【Linux核心實驗】 gcc與make使用

然後編輯各個檔案的内容: 

makefile檔案 

注:rm -f為強制删除檔案或目錄

【Linux核心實驗】 gcc與make使用

main.c檔案 

【Linux核心實驗】 gcc與make使用

sub1.c檔案 

【Linux核心實驗】 gcc與make使用

sub2.c檔案 

【Linux核心實驗】 gcc與make使用

頭檔案cmx.h 

【Linux核心實驗】 gcc與make使用

執行make,預設在目前路徑下查找makefile檔案并執行。如下圖所示 

注:make需要另行安裝

【Linux核心實驗】 gcc與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

繼續閱讀