- .c : C語言源代碼文件
- .a : 由目標文件構成的庫文件
- .C, .cc或.cxx : C++源文件
- .h : 頭文件
- .i : 已經預處理過的C源代碼文件
- .ii : 已經預處理過的C++源代碼文件
- .o : 編譯後的目標文件
- .s : 彙編語言源代碼文件
- .S : 通過預編譯的彙編語言源代碼文件
gcc [options] [filenames]
gcc經常使用參數
- -o output_filename : 肯定可執行文件名
- -c : 只編譯,不連接成可執行文件,只生成.o爲後綴的目標文件。
- -g : 產生調試工具(GNU的gdb)所必要的符號信息。
- -O : 對程序進行優化編譯、連接,在編譯、連接過程當中進行優化處理,產生文件可提升執行效率,但編譯、連接速度慢。
- -O2 : 比-O更好的優化編譯、連接。
- -Idirname : 將dirname所指出的目錄加入到程序頭文件目錄列表中。
- -Ldirname : 將dirname所指出的目錄加入到庫文件的目錄列表中。默認狀態下,連接程序ld在系統的預設路徑(如/usr/lib)尋找所須要的庫文件,這個選項告訴程序先到-L指定的目錄中去尋找,而後再到系統預設路徑中尋找。
- -lname : 在連接時,裝載名字爲「libname.a」的函數庫,該函數庫位於系統預設的目錄或者由-L選項指定的目錄下。通常能夠簡寫,如-lm表示「libm.a」。
- -static : 使用靜態連接庫文件。
- -Wall : 生成全部警告信息。
- -w : 不生成任何警告信息
- -DMACRO : 定義MACRO宏,等效於在程序中使用#define MACRO。
GDB命令
- gdb ExecutableFile : 啓動gdb(或者是先輸入gdb,而後再輸入file ExecutableFile)。
- list(l) : 查看程序。
- break(b) breakpoint : 設置斷點,其中breakpoint能夠是函數名,行號,文件名:行號。
- break(b) 行號 if 條件 : 當條件爲真時,指定行號處斷點生效,例b 5 if i=10,當i等於10時第5行斷點生效。
- info break : 查看全部設置的斷點。
- delete 斷點編號 : 刪除斷點。
- run(r) : 開始運行程序。
- next(n) : 單步運行程序(不進入子程序)。
- step(s) : 單步運行程序(進入子程序)。
- continue(c) : 繼續運行程序。
- print(p) 變量名 : 查看指定變量值。
- finish : 運行程序,直到當前函數結束。
- watch 變量名 : 對指定變量進行監控。
- quit(q) : 退出gdb。