(利用GCC生成可執行檔案的處理過程大緻為:GCC需要調用預處理程式cpp,由它負責展開在源檔案中定義的宏,并向其中插入"#include"語句所包含的内容;接着,GCC會調用as将處理後的源代碼編譯成目标代碼;最後,GCC會調用連結程式ld,把生成的目标代碼連結成一個可執行程式。)
-E
使用-E選項可以讓GCC停止在預處理完成階段(完成所有#define,#if,#include等替換),輸出到标準輸出,除非指定-o選項,gcc不再做更多的處理。可使用-o選項生成一個以i結尾的檔案(GCC預設将.i檔案看成是預處理後的C語言源代碼) -S
停止在彙編階段,輸出.s(彙編語言源碼)但不調用as -c
停止在連接配接階段,輸出.o但不調用ld -o FILE
指定輸出檔案名。-o選項不是産生可執行二進制代碼的關鍵選項,它隻是為gcc的輸出給出一個檔案名 -DFOO=BAR
在指令行定義預處理宏FOO,其值為BAR -IDIRNAME
将DIRNAME加入到頭檔案的搜尋目錄清單中 -LDIRNAME
将DIRNAME加入到庫檔案的搜尋目錄清單中,預設情況下gcc 隻連結共享庫 -static
連結靜态庫,即執行靜态連結,預設情況下,GCC在連結時優先使用動态連結庫 -lFOO
連結名為libFOO的函數庫 -g
GCC在産生調試符号時,同樣采用了分級的思路,開發人員可以通過在-g選項後附加數字1、2或3來指定在代碼中加入調試資訊 的多少。預設的級别是2(-g2),此時産生的調試資訊包括擴充的符号表、行号、局部或外部變量資訊。級别3(-g3)包含級别2中的所有調試資訊,以及源代碼中定義的宏。級别1(-g1)不包含局部變量和與行号有關的調試資訊,是以隻能夠用于回溯跟蹤和堆棧轉儲之用。回溯跟蹤指的是監視程式在運作過程中的函數調用曆史,堆棧轉儲則是一種以原始的十六進制格式儲存程式執行環境的方法,兩者都是經常用到的調試手段 -ggdb
在可執行程式中包含隻有GNU debugger才能使别的達兩條是資訊 -On(n=1,2,3)
使用編譯選項-On來控制優化代碼的生成,其中n是一個代表優化級别的整數。通常來說,數字越大優化的等級越高,同時也就意味着程式的運作速度越快。在linux下一般使用-O2選項,因為它在優化長度、編譯時間和代碼大小之間,取得了一個比較理想的平衡點 -ansi
支援ANSI/ISO C的标準文法,取消GNU的文法擴充中與該标準有沖突的部分
(但這一選項并不能保證生成ANSI相容的代碼) -pedantic
允許發出ANSI/ISO C标準所列出的所有警告 -pedantic -errors
允許發出ANSI/ISO C标準所列出的所有錯誤 -traditional 支援Kernighan & Ritchie C文法(如用舊式文法定義函數) -w
關閉所有警告,建議不要使用此項 -Wall
允許發出gcc能提供的所有有用的警告,也可以用-W(warning)來标記指定的警告 -werror
把所有警告轉換為錯誤,以在警告發生時中止編譯程 -MM
輸出一個make相容的相關清單 -x language
指定程式設計語言language,如C,C++,Java,Ada,F77,Assembler等 -v
顯示在編譯過程的每一步中用到的指令 更詳細内容,請參見man gcc.