linux歷程 GCC程式編譯

2021-06-08 20:00:38 字數 1254 閱讀 8525

1)gcc編譯器能將c、c++語言源程式、組合語言編譯、鏈結成可執行檔案。

2)gcc通過字尾名來區分輸入檔案的類別:

.c為字尾:c語言源**檔案

.a為字尾:由目標檔案構成的庫檔案

.c,.cc或.cxx為字尾:c++源**檔案

.h為字尾:標頭檔案

.i為字尾:已經預處理過的c源**檔案

.ii為字尾:已經預處理過的c++源**檔案

.o為字尾:編譯後的目標檔案

.s為字尾:組合語言源**檔案

.s為字尾:經過預編譯的組合語言源**

3)gcc最基本的用法:

gcc [options] [filenames]

options:編譯所需要的編譯選項

filenames:要編譯的檔名

4)基本、常用的編譯選項:

-o output_filename :確定可執行檔案的名稱為output_filename。如果不        給出該選項,gcc就給出缺省的可執行檔案a.out

-c :只編譯,不連線成可執行檔案,編譯器只是由輸入的.c等原始檔生成.

為字尾的目標檔案

-g :產生除錯工具(gnu的gdb)所必要的符號資訊,要想對編譯出的程式

行除錯,就必須加入這個選項

接過程中進行優化處理。這樣產生的可執行檔案的執行效率可以提高,

但是編譯、鏈結速度就相應變慢

試執行可執行檔案的執行時間,要顯示執行時間是在執行命令前加tim

即可,如: time ./a.out   表示執行a.out,同時顯示執行時間

-idirname :將dirname所指出的目錄加入到程式頭檔案目錄列表中。例:

gcc foo.c -i/home/include -o foo

-ldirname :將dirname所指出的目錄加入到庫檔案的目錄列表中。在預設狀

態下,鏈結程式ld在系統的預設路徑中(如/usr/lib)尋找所需要的庫文

件,這個選項告訴鏈結程式,首先到-l指定的目錄中去尋找,然後再到

系統預設路徑中尋找

「libm.a」的數學函式庫。例:

gcc foo.c -l/home/lib -lfoo -o foo

動態與靜態兩種,動態庫常用.so為字尾,靜態用.a為字尾。linux下進

鏈結的預設操作是首先鏈結動態庫。

-wall :生成所有警告資訊

-w :不生成任何警告資訊

-dmacro :定義macro巨集,等效於程式中使用#define macro

gcc編譯C 程式

單個原始檔生成可執行程式 下面是乙個儲存在檔案 helloworld.cpp 中乙個簡單的 c 程式的 helloworld.cpp include int main int argc,char argv 程式使用定義在標頭檔案 iostream 中的 cout,向標準輸出寫入乙個簡單的字串。該 可...

gcc編譯C 程式

單個原始檔生成可執行程式 下面是乙個儲存在檔案 helloworld.cpp 中乙個簡單的 c 程式的 helloworld.cpp include int main int argc,char argv 程式使用定義在標頭檔案 iostream 中的 cout,向標準輸出寫入乙個簡單的字串。該 可...

GCC編譯程式

gcc gnu compiler collection 是linux下最主要的一種編譯工具。gcc編譯格式 gcc 選項 源檔名 選項 目標檔名 採用預設得方式編譯原始檔,系統會生成a.out可執行檔案 採用顯式編譯成目標檔案,在編譯成可執行檔案 gcc c hello.c 生成hello.o gc...