Linux學習筆記五 gcc程式編譯

2021-12-30 05:18:35 字數 1141 閱讀 4169

linux學習筆記五:gcc程式編譯

linux下的gcc(gnu c compiler)是由gnu推出的功能十分強大的平台編譯器,它可在多種硬體平台上編譯出可執行程式,對於gcc的學習與掌握非常必要,因為gcc將會伴隨我們整個的linux學習及開發過程。gcc可以降c,c++及匯程式設計序編譯鏈結成可執行的檔案。需要注意的是在linux中可執行檔案沒有統一的字尾,系統是從檔案的屬性來區分的,這一點跟window下是大不一樣的。

那麼gcc的原始檔是否可以不管檔案的字尾呢?答案是否定的,gcc是要通過字尾來區別輸入檔案的類別的,如:.c, .a(由目標檔案構成的庫檔案),.c, .cc , .cxx(是c++源**檔案),.h(標頭檔案),.i(已經預處理過的c源**檔案), .ii(已預處理過的c++源**檔案),.o(編譯後的目標檔案),.s(彙編源**檔案),.s(經過預彙編的彙編原始檔);

gcc的編譯過程可以分為四個階段,即:預處理,編譯,彙編,鏈結。

www.2cto.com  

下面看乙個簡單的例子:

gcc常用編譯選項: 

1. -o(小o)    指定編譯後的可執行檔名,預設為 ***.out  

2.  -c           只編譯,不會進行連線的.o檔案,不可執行

3. -g         編譯出可除錯的程式,即如果我們需要對程式進行除錯,則編譯時必須帶-g ,此時生成的檔案將會大很多

4. - o 及-o2   對編譯鏈結過程進行優化

5.-i(大i)    如-i/home/a  指定外加頭檔案目錄   其實也可把自己做的標頭檔案直接放在  /usr/include/下

www.2cto.com  

6.-l        指定庫所在路徑,跟-i原理一樣

7. -static       靜態鏈結    ,  即把庫整合到程式中合成乙個可執行檔案 ,相比於動態庫,則動態庫只會在執行時動態地呼叫函式庫。靜態鏈結浪費空間,動態鏈結耗時。預設採用動態鏈結,但只要編譯時加上-static選項就會進行靜態鏈結。

8. -wall :   生成所有警告資訊    而  -w 則不生成任何警告資訊  

9. -d   相當於#define    進行巨集定義。  如 gcc -dyes  hello.c -o hello   這裡定義了乙個名為yes的巨集  

作者 stewen_001

linux學習筆記一(gcc)

1 gcc gcc e 預處理 test.c o test.i m32 32位機器 define include gcc s 編譯 s gcc c 彙編 o o檔案 可重定位的目標檔案 鏈結 readelf 檢視elf檔案 h檢視檔案的頭 test.o a列出所有資訊 gcc test.c wall...

Linux 學習筆記 gcc初體驗

大部分內容 用vmware裝了個ubuntu的虛擬機器嗎,前坑未填,又增新坑。在這裡學了一下,基本的目錄結構 目錄管理的生存向命令 vim的基本操作 好了!開始填坑!ctrl alt t 開啟終端 pwd 顯示當前目錄 cd 切換目錄 接下來主要說明gcc的用法 1.單個檔案的編譯 首先通過vim建...

Linux學習筆記五

網路管理 ifconfig 檢視網絡卡資訊 ifconfig up 啟用網絡卡 ifconfig down 停止網絡卡 ifconfig eth0 網路ip 位址 netmask 子網掩碼 設定網絡卡的ip 位址和子網掩碼 ifconfig eth0 0 ip位址 增加一塊虛擬網絡卡為eth0 0 ...