gcc 編譯控制選項
前面已經講過, gcc 的基本用法是:
$ gcc [選項] [文件名]
gcc 有很多編譯控制選項,使得 gcc 可以根據不同的參數進行不同的編譯處理,可供 gcc
調用的參數大約有 100 來個,但實際使用中並不會用到這么的多選項和參數。這里只介紹一
些最基本和常用的控制選項以及參數,如表 10.3 所列。
表 10.3 gcc 常用選項和參數
名稱 | 功能描述 |
-c | 只編譯不鏈接。編譯器只是將輸入的.c 等源代碼文件生成.o 為后綴的目標文件,通 常用於編譯不包含主程序的子程序文件 |
-S | 只對文件進行編譯,不匯編和鏈接 |
-E | 只對文件進行預處理,不編譯匯編和鏈接 |
-o output_filename | 確定輸出文件的名稱為 output_filename,這個名稱不能和源文件同名。如果不給出 這個選項, gcc 就給出預設的可執行文件 a.out |
-g | 產生符號調試工具(GNU 的 gdb)所必要的符號信息,要想對源代碼進行調試,就必 須加入這個選項。 g 也分等級,默認是-g2, -g1 是最基本的, -g3 包含宏信息 |
-DFOO=BAR | 在命令行定義預處理宏 FOO,值為 BAR |
-O | 對程序進行優化編譯、鏈接。采用這個選項,整個源代碼會在編譯、鏈接過程中進 行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、鏈接的速 |
度就相應地要慢一些 | |
-ON | 指定代碼的優化等級為 N,可取值為 0、 1、 2、 3; O0 沒有優化, O3 優化級別最高 |
-Os | 使用了-O2 的優化部分選項,同時對代碼尺寸進行優化 |
-Idirname | 將 dirname 目錄加入到程序頭文件搜索目錄列表中,是在預編譯過程中使用的參數 |
-L dirname | 將 dirname 目錄加入到庫文件的搜索目錄列表中 |
-l FOO | 鏈接名為 libFOO 的函數庫 |
-static | 鏈接靜態庫 |
-ansi | 支持 ANSI/ISO C 的標准語法,取消 GNU 語法中與該標准相沖突的部分 |
-w | 關閉所有警告,不建議使用 |
-W | 開啟所有 gcc 能提供的警告 |
-werror | 將所有警告轉換為錯誤,開啟該選項,遇到警告都會中止編譯 |
-v | 顯示 gcc 執行時執行的詳細過程, 以及 gcc 和相關程序的版本號 |