細說cc 編譯命令
來源:互聯網
上載者:User
多數UNIX平台都通過CC調用它們的C編譯器.除標準和CC以外,LINUX和FREEBSD還支援gcc. 基本的編譯命令有以下幾種: 1. -c 編譯產生對象檔案(*.obj)而不連結成可執行檔,當編譯幾個獨立的模組,而待以後由連結程式把它們連結在一起時,就可以使用這個選項,如: $cc -c hello.c ===> hello.o $cc hello.o 2. -o 允許使用者指定輸出檔案名,如 $cc hello.c -o hello.o or $cc hello.c -o hello 3. -g 指明編譯器在編譯的輸出中應產生調試資訊.這個調試資訊使原始碼和變數名引用在偵錯工具中或者當程式異常退出後在分析core檔案時可被使用. 4. -D 允許從編譯器命令列定義宏符號 一共有兩種情況:一種是用-DMACRO,相當於在程式中使用#define MACRO,另一種是用-DMACRO=A,相當於程式中的#define MACRO A.如對下面這代碼: #ifdefine DEBUG printf("debug message/n"); #endif 編譯時間可加上-DDEBUG參數,執行程式則列印出編譯資訊 5. -I 可指定尋找include檔案的其他位置.例如,如果有些include檔案位於比較特殊的地方,比如/usr/local/include,就可以增加此選項如下: $cc -c -I/usr/local/include -I/opt/include hello.c 此時目錄搜尋會按給出的次序進行. 6. -E 這個選項是相對標準的,它允許修改命令列以使編譯器把預先處理的C檔案發到標準輸出,而不實際編譯代碼.在查看C預先處理偽指令和C宏時,這是很有用的.可能的編譯輸出可重新定向到一個檔案,然後用編輯程式來分析: $cc -c -E hello.c >cpp.out 此命令使include檔案和程式被預先處理並重新導向到檔案cpp.out.以後可以用編輯程式或者分頁命令分析這個檔案,並確定最終的C語言代碼看起來如何. 7. -o 最佳化選項, 這個選項不是標準的 -O和 -O1指定1級最佳化 -O2 指定2級最佳化 -O3 指定3級最佳化 -O0指定不最佳化 $cc -c O3 -O0 hello.c 當出現多個最佳化時,以最後一個為準!! 8. -Wall 以最進階別使用GNU編譯器,專門用於顯示警告用!! $gcc -Wall hello.c 9. -L指定串連庫的搜尋目錄,-l(小寫L)指定串連庫的名字 $gcc main.o -L/usr/lib -lqt -o hello 上面的命令把目標檔案main.o與庫qt相串連,串連時會到/usr/lib尋找這個庫檔案.也就是說-L與-l一般要成對出現.