VC編譯器引數與選項詳解

2021-09-30 16:13:31 字數 3313 閱讀 8606

cl (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...]

各命令列引數的意義如下 :

1、option

命令列中的"option"是指乙個或多個編譯選項。在指定選項時,需要在選項前加正斜槓(/)或乙個短劃線(-)。有一些選項還會帶有引數,使用":"來指定選項的引數。比如"/sybsystem:windows,5.0"是乙個編譯選項,表示可執行程式執行所依賴的子系統是windows(win32圖形使用者介面的應用程式),版本最低5.0(即windows 2000)。選項名區分大小寫(/help選項除外),而且除了/link選項之外,其他選項是順序沒有要求。在編譯時所指定的所有選項都將應用於使用者指定的所有原始檔。option命令列引數是可選。

2、file

命令列中的"file"是乙個或多個所需要編譯的原始檔,也可以是.obj檔案或庫檔案。cl.exe編譯原始檔並將.obj檔案和庫的名稱傳遞給編譯器。file引數是編譯器的必須引數。

3、lib

該選項用於指定乙個或多個庫名。cl.exe直接將這些名稱傳遞給鏈結器。lib是cl.exe的可選引數。

4、command-file

它包含多個選項和檔名的檔案,為可選引數。

5、link-opt

乙個或多個鏈結器選項。cl將這些選項傳遞給鏈結器,也是可選引數。

舉例hello world:

那麼編譯該原始檔命令列下:

cl -c -dcrtapi1=_cdecl -dcrtapi2=_cdel -nologo -gs -d_x86_=1 -dwin32 -d_win32 -w3 -d_winnt-d_win32_winnt=0x0500 -d_win32_ie=0x500 -dwinver=0x0500 -d_mt -mtd /gz /fo hello.c

"hello.c"前面的都是編譯選項(即option引數),"hello.c"是原始檔(file引數),沒有使用lib、command-file、link-opt等命令列引數。

在命令列編譯前,需要設定你的環境變數,如下所示:

(如果被修改過的並不是預設如此,設定完成需要重啟電腦)

下面介紹的全是vc編譯器選項,option引數是cl.exe的編譯選項,是cl.exe命令列引數中最複雜、也是最常用的。下面介紹一些常用的編譯選項:

1、**生成有關

這些選項將影響編譯完成後生成的機器**:

2、除錯有關

與除錯有關的編譯選項如下圖,/z7、/zi、/zi這三個選項是對程式進行除錯時所必需的選項,同時注意,在生成除錯版本的程式時,需要指定/od選項以禁用優化:

3、程式優化有關

與程式優化有關的選項如下圖,優化選項將影響編譯器對**的優化,最選擇**體積最小還是選擇執行速度最快等需要使用這些選項:

4、輸出檔案有關

與生成的輸出檔案有關的選項如下圖,輸入檔案在引數中需要使用字串來指定其路徑,字串使用雙引號("")括起來,如/fd "bin//"。注意字串的轉意字元,如果需要使用單斜槓表示檔案路徑,需要使用雙槓("//"):

5、預處理器有關

與預處理器有關的選項如下圖,這些選項將影響預處理器的執行,比如通過/d選項可以達到與在源**中使用#define定義基本相同的效果:

6、鏈結有關

7、預編譯有關

與預編譯有關的選項如下圖,這些編譯選項會影響預編譯結果:

8、語言有關

與語言有關的選項如下圖,比如/za、/ze選項表示是否支援微軟的語言擴充套件,還是只支援標準 c/c++。/zp選項可以指定結構中的成員對齊方式,這將影響到生成的程式中結構體的大小。在一些協議頭的處理中,/zp選項非常有用:

9、其他選項

這些選項的影響是多方面的,不太好分類。包括顯示幫助資訊、設定警告等。

關於vc編譯器引數與選項方面的知識就是這此了,當然這裡只是大多數vc/c++編譯器常用的選項,並不是全部編譯選項。

(如果需要使用到編譯器其他的選項,請自行查閱msdn)

另外,不足的地方希望大家能夠補充說明!

(關於以上筆記文件,可發郵件向我索取: [email protected]

[email protected]

)原文出處:

VC編譯器選項

cl.exe 是控制 microsoft c 和 c 編譯器與鏈結器的 32 位工具。編譯器產生通用物件檔案格式 coff 物件 obj 檔案。鏈結器產生可執行檔案 exe 或動態鏈結庫檔案 dll 注意,所有編譯器選項都區分大小寫。若要編譯但不鏈結,請使用 c。使用 nmake 生成輸出檔案。使用...

VC編譯器選項

優化 o1 最小化空間 op 改善浮點數一致性 o2 最大化速度 os 優選 空間 oa 假設沒有別名 ot 優選 速度 ob內聯展開 預設 n 0 ow 假設交叉函式別名 od 禁用優化 預設值 ox 最大化選項。ogityb2 gs og 啟用全域性優化 oy 啟用框架指標省略 oi 啟用內部函...

vc編譯器選項

cl.exe 是控制 microsoft c 和 c 編譯器與鏈結器的 32 位工具。編譯器產生通用物件檔案格式 coff 物件 obj 檔案。鏈結器產生可執行檔案 exe 或動態鏈結庫檔案 dll 注意,所有編譯器選項都區分大小寫。若要編譯但不鏈結,請使用 c。使用 nmake 生成輸出檔案。使用...