當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]CL.exe 的命令行編譯斷斷續(xù)續(xù)接觸了幾次,每次都忘,每次都重新查。每次都搞不清楚語(yǔ)法,尤其是傳給linker的參數(shù)。因?yàn)榫W(wǎng)上所有的文章都是一樣的,都是詳細(xì)的參數(shù)列表,都是沒(méi)有實(shí)例。為了和大眾保持一

CL.exe 的命令行編譯斷斷續(xù)續(xù)接觸了幾次,每次都忘,每次都重新查。每次都搞不清楚語(yǔ)法,尤其是傳給linker的參數(shù)。因?yàn)榫W(wǎng)上所有的文章都是一樣的,都是詳細(xì)的參數(shù)列表,都是沒(méi)有實(shí)例。為了和大眾保持一致,我在下面也copy一個(gè)詳細(xì)的參數(shù)列表---只是在前面加幾個(gè)實(shí)例

?

cl.exe test.cpp /EHsc /I"C:/OpenCV2.0/include/opencv/" cv200.lib highgui200.lib?cxcore200.lib?/link /LIBPATH:"C:/OpenCV2.0/vs2008/lib"

?

/LIBPATH小寫(xiě)也可以/libpath

?

網(wǎng)上找到的“經(jīng)典用法”

cl *.cpp /G7 /MD /Ox /Ot /W3 /c /EHsc /I"G:/Visual C++/VC98/PlatformSDK/Include"

link *.obj rc.res /LIBPATH:"G:/Visual C++/lib" /SUBSYSTEM:WINDOWS /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib OpenGL32.Lib

?

MFC 開(kāi)發(fā)如下:
編譯源代碼:
cl *.cpp /Ox /Ot /G7 /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /EHsc /MD /arch:SSE2 /W3 /c
資源編譯 :
rc /l 0x804 winmfc.rc
鏈接 :
link *.obj WinMFC.res /out:WinMFC.exe /OPT:NOWIN98 /SUBSYSTEM:WINDOWS /MACHINE:X86

?

===================================

?

CL?? 命令行使用下列語(yǔ)法:?????

CL?? [option...]?? file...?? [option?? |?? file]...?? [lib...]?? [@command-file]?? [/link?? link-opt...]???
下表說(shuō)明CL?? 命令的輸入項(xiàng)意義

????
option?? ??一個(gè)或多個(gè)?? CL?? 選項(xiàng)。請(qǐng)注意,所有選項(xiàng)都應(yīng)用于所有指定的源文件。選項(xiàng)是由一個(gè)正斜杠?? (/)?? 或一個(gè)短劃線?? (–)?? 指定的。如果某個(gè)選項(xiàng)帶有參數(shù),則該選項(xiàng)的說(shuō)明指定在選項(xiàng)和參數(shù)之間是否允許有空格。選項(xiàng)名(/HELP?? 選項(xiàng)除外)區(qū)分大小寫(xiě)。有關(guān)更多信息,請(qǐng)參閱?? CL?? 選項(xiàng)的順序。??

????
file? ??一個(gè)或多個(gè)源文件、.obj?? 文件或庫(kù)的名稱。CL?? 編譯源文件并將?? .obj?? 文件和庫(kù)的名稱傳遞給鏈接器。有關(guān)更多信息,請(qǐng)參閱?? CL?? 文件名語(yǔ)法。

lib?? ??一個(gè)或多個(gè)庫(kù)名。CL?? 將這些名稱傳遞給鏈接器。?????
????
command-file?? 包含多個(gè)選項(xiàng)和文件名的文件。有關(guān)更多信息,請(qǐng)參閱?? CL?? 命令文件。?????
????
link-opt?? 一個(gè)或多個(gè)鏈接器選項(xiàng)。CL?? 將這些選項(xiàng)傳遞給鏈接器。

您可以指定任意數(shù)目的選項(xiàng)、文件名和庫(kù)名,條件是命令行上的字符數(shù)不超過(guò)?? 1024,該限制是操作系統(tǒng)指定的。?

?

?

編譯器

注意,所有編譯器選項(xiàng)都區(qū)分大小寫(xiě)。

若要編譯但不鏈接,請(qǐng)使用?? /c。

使用?? NMAKE?? 生成輸出文件。?????
使用?? BSCMAKE?? 支持類瀏覽。

以下是一個(gè)完整的編譯器選項(xiàng)分類列表。

?

一、優(yōu)化?????
? 選項(xiàng)???????????? 作用?????
? /O1?? ?創(chuàng)建小代碼?????
? /O2?? ?創(chuàng)建快速代碼?????
? /Oa?? ?假設(shè)沒(méi)有別名?????
? /Ob?? ?控制內(nèi)聯(lián)展開(kāi)?????
? /Od?? ?禁用優(yōu)化?????
? /Og?? ?使用全局優(yōu)化?????
? /Oi?? ?生成內(nèi)部函數(shù)?????
? /Op?? ?改善浮點(diǎn)數(shù)一致性?????
? /Os?? ?代碼大小優(yōu)先?????
? /Ot?? ?代碼速度優(yōu)先?????
? /Ow?? ?假定在函數(shù)調(diào)用中使用別名?????
? /Ox?? ?使用最大優(yōu)化?? (/Ob1gity?? /Gs)?????
? /Oy?? ?省略框架指針

?

二、代碼生成?????
? 選項(xiàng)?? ??作用?????
? /clr?? ?啟用C++ 的托管擴(kuò)展并產(chǎn)生在公共語(yǔ)言運(yùn)行庫(kù)上運(yùn)行的輸出文件?????
? /EH?? ?指定異常處理模型?????
? /G3?? ?優(yōu)化代碼以優(yōu)選386處理器。在Visual C++ 5.0中已經(jīng)停用,編譯器將忽略此選項(xiàng)?????
? /G4?? ?優(yōu)化代碼以優(yōu)選486處理器。在Visual C++ 5.0中已經(jīng)停用,編譯器將忽略此選項(xiàng)?????
? /G5?? ?優(yōu)化代碼以優(yōu)選Pentium?????
? /GB?? ?與/G6等效;將 _M_IX86的值設(shè)置為600?????
? /Gd?? ?使用__cdecl 調(diào)用約定?????
? /Ge?? ?激活堆棧探測(cè)?????
? /GF???
? /GF?? ?啟用字符串池?????
? /GH?? ?調(diào)用掛鉤函數(shù)_penter?????
? /GH? ?調(diào)用掛鉤函數(shù)_pexit?????
? /GL?? ?啟用全程序優(yōu)化?????
? /Gm?? ?啟用最小重新生成?????
? /Gr?? ?啟用運(yùn)行時(shí)類型信息(RTTI)?????
? /Gr?? ?使用 __fastcall 調(diào)用約定?????
? /GS?? ?控制堆棧探測(cè)?????
? /GT?? ?支持使用靜態(tài)線程本地存儲(chǔ)區(qū)分配的數(shù)據(jù)的纖程安全?????
? /GX?? ?啟用同步異常處理?????
? /Gy?? ?啟用函數(shù)級(jí)鏈接?????
? /GZ?? ?使用?? __stdcall?? 調(diào)用約定?????
? /MD?? ?使用?? MSVCRT.lib?? 創(chuàng)建多線程?? DLL?????
? /MDd?? ?使用?? MSVCRTD.lib?? 創(chuàng)建調(diào)試多線程?? DLL?????
? /ML?? ?使用?? LIBC.lib?? 創(chuàng)建單線程可執(zhí)行文件?????
? /MLd?? ?使用?? LIBCD.lib?? 創(chuàng)建調(diào)試單線程可執(zhí)行文件?????
? /MT?? ?使用?? LIBCMT.lib?? 創(chuàng)建多線程可執(zhí)行文件?????
? /MTd?? ?使用?? LIBCMTD.lib?? 創(chuàng)建調(diào)試多線程可執(zhí)行文件

?

三、輸出文件?????
? 選項(xiàng)?? ??作用?????
? /FA?? ?創(chuàng)建列表文件
? /FA?? ?設(shè)置列表文件名??????????

? /Fd?? ?重命名程序數(shù)據(jù)庫(kù)文件?????
? /Fe?? ?重命名可執(zhí)行文件?????
? /Fm? ?創(chuàng)建映射文件?????
? /Fo?? ?創(chuàng)建對(duì)象文件?????
? /Fp?? ?指定預(yù)編譯頭文件名?????
? /FR???
? /FR?? ?生成瀏覽器文件?????
? /Fx?? ?將插入的代碼與源文件合并

?

四、調(diào)試???????
? 選項(xiàng)?? ??作用?????
? /GS?? ?緩沖區(qū)安全檢查?????
? /GZ?? ?與?? /RTC1?? 相同?????
? /RTC?? ?啟用運(yùn)行時(shí)錯(cuò)誤檢查?????
? /Wp64?? 檢測(cè)?? 64?? 位可移植性問(wèn)題?????
? /Yd?? ?將完整的調(diào)試信息放在所有對(duì)象文件中?????
? /Yl?? ?創(chuàng)建調(diào)試庫(kù)時(shí)插入?? PCH?? 引用?????
? /Z7?? ?生成與?? C?? 7.0?? 兼容的調(diào)試信息?????
? /Zd?? ?生成行號(hào)?????
? /Zi?? ?生成完整的調(diào)試信息

?

五、預(yù)處理器???????
? 選項(xiàng)?? ??作用?????
? /AI?? ?指定在解析傳遞到#using?? 指令的文件引用時(shí)搜索的目錄?????
? /c?? ??在預(yù)處理期間保留注釋?????
? /D?? ?定義常數(shù)和宏?????
? /E?? ?將預(yù)處理器輸出復(fù)制到標(biāo)準(zhǔn)輸出?????
? /EP?? ?將預(yù)處理器輸出復(fù)制到標(biāo)準(zhǔn)輸出?????
? /Fl?? ?預(yù)處理指定的包含文件?????
? /FU?? ?強(qiáng)制使用文件名,就像它已被傳遞到#using?? 指令一樣?????
? /I?? ??在目錄中搜索包含文件?????
? /P?? ?將預(yù)處理器輸出寫(xiě)入文件?????
? /U?? ?移除預(yù)定義宏?????
? /U?? ?移除所有的預(yù)定義宏?????
? /X?? ?忽略標(biāo)準(zhǔn)包含目錄?????
? /ZI?? ?將調(diào)試信息包含在與“編輯并繼續(xù)”兼容的程序數(shù)據(jù)庫(kù)中

?

六、語(yǔ)言???????
? 選項(xiàng)?? ???作用?????
? /noBool?? ?取消?? C++?? bool、true?? 和?? false?? 關(guān)鍵字?????
? /vd?? ??取消或啟用隱藏的?? vtordisp?? 類成員?????
? /vmb?? ??對(duì)指向成員的指針使用最佳的基?????
? /vmg?? ??對(duì)指向成員的指針使用完全一般性?????
? /vmm?? ??聲明多重繼承?????
? /vms?? ??聲明單一繼承?????
? /vmv?? ??聲明虛擬繼承?????
? /Za?? ??禁用語(yǔ)言擴(kuò)展?????
? /Zc?? ??在?? /Ze?? 下指定標(biāo)準(zhǔn)行為?????
? /Ze?? ??啟用語(yǔ)言擴(kuò)展?????
? /Zg?? ??生成函數(shù)原型?????
? /Zl?? ??從?? .obj?? 文件中移除默認(rèn)庫(kù)名?????
? /Zpn?? ??封裝結(jié)構(gòu)成員?????
? /Zs?? ??只檢查語(yǔ)法

?

七、鏈接???????
? 選項(xiàng)?? ??作用?????
? /F?? ?設(shè)置堆棧大小?????
? /LD?? ?創(chuàng)建動(dòng)態(tài)鏈接庫(kù)?????
? /LDd?? ?創(chuàng)建調(diào)試動(dòng)態(tài)鏈接庫(kù)?????
? /link?? ?將指定的選項(xiàng)傳遞給?? LINK?????
? /MD?? ?使用?? MSVCRT.lib?? 編譯以創(chuàng)建多線程?? DLL?????
? /MDd?? ?使用?? MSVCRTD.lib?? 編譯以創(chuàng)建調(diào)試多線程?? DLL?????
? /ML?? ?使用?? LIBC.lib?? 編譯以創(chuàng)建單線程可執(zhí)行文件?????
? /MLd?? ?使用?? LIBCD.lib?? 編譯以創(chuàng)建調(diào)試單線程可執(zhí)行文件?????
? /MT?? ?使用?? LIBCMT.lib?? 編譯以創(chuàng)建多線程可執(zhí)行文件?????
? /MTd?? ?使用?? LIBCMTD.lib?? 編譯以創(chuàng)建調(diào)試多線程可執(zhí)行文件

?

八、預(yù)編譯頭???????
? 選項(xiàng)?? ??作用?????
? /Y-?? ?忽略當(dāng)前生成中的所有其他預(yù)編譯頭編譯器選項(xiàng)?????
? /Yc?? ?創(chuàng)建預(yù)編譯頭文件?????
? /Yd?? ?將完整的調(diào)試信息放在所有對(duì)象文件中?????
? /Yu?? ?在生成期間使用預(yù)編譯頭文件?????
? /YX?? ?自動(dòng)處理預(yù)編譯頭

?

九、雜項(xiàng)???????
? 選項(xiàng)?? ??作用?????
? @?? ?指定響應(yīng)文件?????
? /??? ?列出編譯器選項(xiàng)?????
? /c?? ??編譯但不鏈接?????
? /H?? ?限制外部(公共)名稱的長(zhǎng)度?????
? /HELP?? ?列出編譯器選項(xiàng)?????
? /J?? ??更改默認(rèn)的?? char?? 類型?????
? /NOLOGO?? 取消顯示登錄版權(quán)標(biāo)志?????
? /QI0f?? ?確保?? Pentium?? 0F?? 指令沒(méi)有問(wèn)題?????
? /QIfdiv?? FDIV、FPREM、FPTAN?? 和?? FPATAN?? 指令有缺陷的?? Intel?? Pentium?? 微處理器的變通方法?????
? /QIfist?? 當(dāng)需要從浮點(diǎn)類型轉(zhuǎn)換為整型時(shí)取消?? Helper?? 函數(shù)?? _ftol?? 的調(diào)用????

? /showIncludes?? 在編譯期間顯示所有包含文件的列表?????
? /Tc???
? /Tc?? ?指定?? C?? 源文件?????
? /Tp???
? /Tp?? ?指定?? C++?? 源文件?????
? /V?? ?設(shè)置版本字符串?????
? /w?? ?設(shè)置警告等級(jí)?????
? /w?? ?禁用所有警告?????
? /Wall?? ?啟用所有警告,包括默認(rèn)情況下禁用的警告?????
? /WL?? ?在從命令行編譯?? C++?? 源代碼時(shí)啟用錯(cuò)誤信息和警告消息的單行診斷?????
? /Zm?? ?設(shè)置編譯器的內(nèi)存分配限制????

?

===================================

?

LINK 用法如下:

?

/ALIGN 指定每一節(jié)的對(duì)齊方式?
/ALIGN 選項(xiàng)指定程序線性地址空間中每一節(jié)的對(duì)齊方式。number 參數(shù)以字節(jié)為單位,并且必須是2 的冪。默認(rèn)值是 4K (4096)。如果對(duì)齊方式產(chǎn)生
無(wú)效的圖像,則鏈接器發(fā)出警告。除非正
在編寫(xiě)諸如設(shè)備驅(qū)動(dòng)程序的應(yīng)用程序,否則應(yīng)不需要修改對(duì)齊方式。
/DLL 生成 DLL?
/DRIVER 創(chuàng)建 Windows NT 核心模式驅(qū)動(dòng)程序?
/EXETYPE 生成虛擬設(shè)備驅(qū)動(dòng)程序?
/EXETYPE:DYNAMIC 創(chuàng)建動(dòng)態(tài)加載的虛擬設(shè)備驅(qū)動(dòng)程序。?
/EXETYPE:DEV386 創(chuàng)建靜態(tài)加載的虛擬設(shè)備驅(qū)動(dòng)程序。這是 /EXETYPE 的默認(rèn)值
/INCREMENTAL 控制增量鏈接?
/LARGEADDRESSAWARE 通知編譯器應(yīng)用程序支持大于 2 GB 的地址?
/LIBPATH 允許用戶重寫(xiě)環(huán)境庫(kù)路徑?
/LIBPATH:"e:/VC/LIB" /LIBPATH:"e:/DX/LIB"
/MACHINE 指定目標(biāo)平臺(tái)?
` /MACHINE:{AM33|ARM|EBC|IA64|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|
MIPSR41XX|SH3|SH3DSP|SH4|SH5|THUMB|X86| X64/*8.0版本*/}
/MACHINE:X86
/NOENTRY 創(chuàng)建純資源 DLL?
創(chuàng)建純資源 DLL 時(shí)要求 /NOENTRY 選項(xiàng)。
/OPT 控制 LINK 優(yōu)化
如果生成僅運(yùn)行于 Windows NT 或 Windows 2000 上的組件,則應(yīng)使用 /OPT:NOWIN98。
/SUBSYSTEM: 指定子系統(tǒng)?
{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|
EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|
WINDOWSCE}[,#[.##]]
/OUT 指定輸出文件名?
/OUT:Hello.exe

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉