windows 控制台下執行cl命令

2021-06-09 22:16:08 字數 2889 閱讀 9000

前提:確保已經安裝vc6或者vs系列

我們可以再命令列直接編譯c++程式

在windows作業系統中,開啟命令列,輸入cl,若系統提示

'cl' 不是內部或外部命令,也不是可執行的程式或批處理檔案。

則說明vs沒有安裝或者環境變數設定不正確,可以按照如下步驟設定:

1. 確保已經安裝vs,並在控制台 中鍵入set

檢查是否有類似如下格式的環境變數vsxxcomntools

vs90comntools=d:\program files\microsoft visual studio 9.0\common7\tools\

其中xx與vs版本有關:

a) vs2003對應 vs71comntools

b) vs2005對應vs80comntools

c) vs2008對應vs90comntools

如果沒有則執行步驟2;否則執行步驟3

2. 在我的電腦》屬性》高階》環境變數》系統變數 中新建乙個環靜變數

變數名: vsxxcomntools

變數值: vs安裝目錄\common7\tools\

重複執行步驟1

3. 在控制台中鍵入

>call "%vs90comntools%"vsvars32.bat     <==設定cl執行時的一些環境變數

>cl

確保沒有提示出錯;否則重複步驟1

注意:用set設定環境變數,只能保證在本命令列中生效,命令列視窗一旦關閉,設定就失效了。要想設定也作用於其他命令列視窗,通過我的電腦->環境變數來設定

cl使用簡介

cl有很多選項,請通過cl /?獲取完整列表。這裡列出了一些最重要的選項(選項的字首可以是'-'或'/'),並且有例子。

無選項>cl foo.c bar.c                   <==編譯出foo.obj,bar.obj並自動呼叫鏈結器link鏈結得到foo.exe

/c            只編譯不鏈結

>cl /c foo.c bar.c                <==編譯出foo.obj,bar.obj,但不呼叫鏈結器

/link 指定要鏈結的library

>cl /link kernel32.lib foo.c      <==編譯出foo.obj,並鏈結kernel32.lib,得到foo.exe

/i 把目錄加入include蒐錄路徑中

/d定義預處理器

>cl /d_crt_secure_no_deprecate /d_crt_nonstdc_no_deprecate <==定義2個預處理器

cl常用選項

/c                            只編譯不鏈結

/o2                           設定速度最優化

/w3                           設定警告等級3

cl相關解釋

關於crt的更多解釋

如何禁止警告4996

/d_crt_secure_no_deprecate    關閉warning:4996(表示strcpy不安全的warning等)

/d_crt_nonstdc_no_deprecate   非標準c也關閉warning:4996

/md                           更多關於crt的解釋

link使用簡介

link有很多選項,完整列表見下面僅列出一些常用選項

[/debug] 產生除錯資訊

link /out:main.exe main.obj              <==鏈結main.obj並生成main.exe

[/pdb:] 產生除錯符號檔案

link /debug /out:main.exe main.obj       <==鏈結main.obj並生成帶有除錯資訊的main.exe

[/out:] 指定輸出檔案

link /debug /pdb:main.pdb /out:main.exe main.obj     <==鏈結main.obj並生成帶有除錯資訊的main.exe以及除錯符號檔案main.pdb

[/subsystem:] 指定子系統

link /subsystem:windows /out:main.exe main.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib     <== 編譯windows程式,入口函式自動設為winmain,其中kernel32.lib,...,odbccp32.lib等為windows程式必須鏈結的lib

[/libpath:] 把目錄加入lib搜尋路徑中。如果有多個路徑,則要寫多次/libpath

link /libpath:../common /out:main.exe main.obj lua.lib          <== 鏈結../common中的lua.lib

值得注意的是:

如果同時提供main和winmain,那麼必須手工指定/subsystem

如果只提供main,則鏈結器自動指定/subsystem:console

應用例項

通常我們把cl和link分開使用:下面是編譯lua的一段指令碼

cl /md /o2 /w3 /c /d_crt_secure_no_deprecate /d_crt_nonstdc_no_deprecate /dlua_build_as_dll l*.c

del lua.obj luac.obj <==上述cl編譯所有的l*.c,而lua.obj和luac.obj是不需要link的,所以刪除之

link /dll /out:lua51.dll l*.obj

windows 控制台下執行cl命令

前提 確保已經安裝vc6或者vs系列 我們可以再命令列直接編譯c 程式 在windows作業系統中,開啟命令列,輸入cl,若系統提示 cl 不是內部或外部命令,也不是可執行的程式或批處理檔案。則說明vs沒有安裝或者環境變數設定不正確,可以按照如下步驟設定 1.確保已經安裝vs,並在控制台 中鍵入se...

在控制台下執行c語言程式

從剛開始學習c語言的時候,就開始使用各種ide,例如codeblocks,visual studio等等。那麼,如果不使用ide的話,如何在windows控制台下編譯以及執行我們寫好的c語言程式呢?首先,我們需要知道的是,c語言的編譯器不是作業系統自帶的部分,一般在windows環境下可以安裝商業化...

Windows系統中控制台下編譯C C 檔案

windows系統中控制台下編譯c c 檔案 以vs2010為例,裡面有vc的功能 microsoft visual studio 9.0 vc bin 這裡放有編譯器 cl.exe,將其加到系統變數中的path中即可 microsoft visual studio 9.0 vc include 這...