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一般要成對出現.

**********************gcc/egcs 的主要選項*********
gcc 命令的常用選項
選項 解釋
-ansi 只支持 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色,
例如 asm 或 typeof 關鍵詞。
-c 只編譯並生成目標文件。
-DMACRO 以字符串“1”定義 MACRO 宏。
-DMACRO=DEFN 以字符串“DEFN”定義 MACRO 宏。
-E 只運行 C 預編譯器。
-g 生成調試信息。GNU 調試器可利用該信息。
-IDIRECTORY 指定額外的頭文件搜索路徑DIRECTORY。
-LDIRECTORY 指定額外的函數庫搜索路徑DIRECTORY。
-lLIBRARY 連接時搜索指定的函數庫LIBRARY。
-m486 針對 486 進行代碼優化。
-o FILE 生成指定的輸出文件。用在生成可執行文件時。
-O0 不進行優化處理。
-O 或 -O1 優化生成代碼。
-O2 進一步優化。
-O3 比 -O2 更進一步優化,包括 inline 函數。
-shared 生成共享目標文件。通常用在建立共享庫時。
-static 禁止使用共享連接。
-UMACRO 取消對 MACRO 宏的定義。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。

原文地址 http://fly-hyp.javaeye.com/blog/228083

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