linux_c 網絡開發日記(2)GCC簡介

DAY2 GCC簡介

       linux系統下的gcc(GNU C Compiler)是GNU推出的功能強大,性能優越的多平臺編譯器,其效率與一般的編譯器相比較平均效率要高20% 到30%)。
GCC編譯器能將C C++語言源程序,彙編程序編譯,鏈接成可執行文件。在Linux系統中,可執行文件沒有統一的後綴,系統從文件屬性來區分可執行文件和不可執行文件。

使用GCC編譯程序時,編譯過程可以被細分爲四個階段:
1:預處理(宏展開)
2:編譯
3:彙編
4:鏈接

GCC通過後綴來區分輸入文件的類別:
.c:c語言源代碼文件
.a:由目標文件構成的庫文件
.C,.cc或.cxx:C++源代碼文件
.h:頭文件
.i :已預處理過得C源代碼文件
.ii:已預處理過得C++源代碼文件
.o:編譯後的目標文件
.s:彙編語言源代碼文件
.S:經過預編譯的彙編語言源代碼文件

gcc基本用法

gcc [options] [filenames]
options:編譯選項
filenames:編譯的文件名


-o :確定可執行文件名,如果不給出這個選項,就默認爲a.out
-c :只編譯,不連接成可執行文件
-g :生成調試工具(GNU的gdb)所必要的符號信息
-O(-O2):優化編譯、鏈接。
-Idirname:將dirname所指出的目錄加入到程序頭文件目錄列表中。
c程序的頭文件包含兩種情況:
#include<A.h>
#include"B.h"
對於<>,預處理程序cpp在系統預設的頭文件目錄(如/usr/include)中搜尋相應的文件;而對於“”,cpp在當前目錄中尋找頭文件,如果當前目錄沒有找到文件,則在指定的dirname中去尋找。
-Ldirname :將dirname所指出的目錄加入到庫文件目錄中。在默認狀態下,鏈接程序Id在系統的預設路徑中(如/usr/lib)尋找縮需要的庫文件,這個選項告訴連接程序,首先找到-L指定的目錄中尋找。然後再去系統預設路徑中尋找。
-lname:在連接時,裝載名字爲“libname.a”的函數庫。例如,-lm表示鏈接名爲“libm.a”的數學函數庫。
-static:靜態鏈接庫文件。由於動態庫節省內存,linux下進行鏈接的缺省操作是首先鏈接動態庫的,



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章