欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
cl.exe link.exe用法詳解
CL.exe 是控制 Microsoft C 和 C++ 編譯器與鏈接器的 32 位工具。編譯器產(chǎn)生通用對象文件格式 (COFF)
對象 (.obj) 文件。鏈接器產(chǎn)生可執行文件 (.exe) 或動(dòng)態(tài)鏈接庫文件 (DLL)。默認情況下cl.exe編譯完后自動(dòng)調用link.exe進(jìn)行連接.所以通常cl a.cpp 后會(huì )生成兩個(gè)文件:a.obj和a.exe;

注意,所有編譯器選項都區分大小寫(xiě)。
注:運行cl a.cpp 可能需要在c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat注冊環(huán)境變量.

用法如下:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]

option : 一個(gè)或多個(gè) CL 選項。請注意,所有選項都應用于所有指定的源文件。選項是由一個(gè)
正斜杠 (/) 或一個(gè)短劃線(xiàn) (-) 指定的。如果某個(gè)選項帶有參數,則該選項的說(shuō)明指
定在選項和參數之間是否允許有空格。選項名(/HELP 選項除外)區分大小寫(xiě)。有關(guān)
更多信息,請參見(jiàn) CL 選項的順序。
/c : 編譯但不鏈接
/Zs : 檢查語(yǔ)法
/? : 列出編譯器選項
/arch : 使用 SSE 或 SSE2 指令生成代碼
/arch:SSE2
/clr : 啟用 C++ 的托管擴展并產(chǎn)生在公共語(yǔ)言運行庫上運行的輸出文件
/F : 設置堆棧大小 | 此選項設置程序堆棧大?。ㄒ宰止潪閱挝唬?。
如果不使用此選項,堆棧大小默認為 1 MB
/F 100
/Fe : 重命名可執行文件
/Feexe.exe
/G7 :針對 Pentium 4 或 Athlon 優(yōu)化代碼。
/GA :優(yōu)化 Windows 應用程序的代碼
/GL :?jiǎn)⒂萌绦騼?yōu)化
/Gm :?jiǎn)⒂米钚≈匦律?br>/HELP :列出編譯器選項
/I :在目錄中搜索包含文件 | 指定源文件目錄 include
/I"e:\VC\include"
/link : 將指定的選項傳遞給 LINK
/MD : 使用 MSVCRT.lib 創(chuàng )建多線(xiàn)程 DLL
/ML : 使用 LIBC.lib 創(chuàng )建單線(xiàn)程可執行文件
/MT : 使用 LIBCMT.lib 創(chuàng )建多線(xiàn)程可執行文件
/O1 : 創(chuàng )建小代碼
/O2 : 創(chuàng )建快速代碼
/Os : 代碼大小優(yōu)先
/W : 設置警告等級
/W3
------------------------------
/Ot : 代碼速度優(yōu)先
/LD : 創(chuàng )建動(dòng)態(tài)鏈接庫
/Ox : 使用最大優(yōu)化

/Zs : 只檢查語(yǔ)法
------------------------------
/TC : 指定 C 源文件
/TP : 指定 C++ 源文件
-----------------------------------------------------------------------------------------
file : 一個(gè)或多個(gè)源文件、.obj 文件或庫的名稱(chēng)。CL 編譯源文件并將 .obj 文件和庫的名
稱(chēng)傳遞給鏈接器。有關(guān)更多信息,請參見(jiàn) CL 文件名語(yǔ)法。
lib : 一個(gè)或多個(gè)庫名。CL 將這些名稱(chēng)傳遞給鏈接器。
command-file: 包含多個(gè)選項和文件名的文件。有關(guān)更多信息,請參見(jiàn) CL 命令文件。
link-opt : 一個(gè)或多個(gè)鏈接器選項。CL 將這些選項傳遞給鏈接器
---------------------------------------------------------------------------------------------
精典用法:
cl *.cpp /G7 /MD /Ox /Ot /W3 /c /EHsc /I"G:\Visual C++\VC98\PlatformSDK\Include"
 
例: cl d:\first64.cpp bufferoverflowU.lib /EHsc
此處解釋一下為什么這樣調用編譯命令,默認情況下,cl在編譯完成之后會(huì )自動(dòng)調用link,命令行中帶上/EHsc是為了打開(kāi)"C++例外(Exceptions)",以免出現編譯器警告;微軟的編譯器從Visual Studio.NET 2002開(kāi)始,默認設置了一個(gè)編譯選項/GS,其作用是堆棧檢查,以防止堆?;蚓彌_區溢出此類(lèi)問(wèn)題的發(fā)生,即是阻止代碼溢出攻擊,所以必須鏈接bufferoverflowU.lib庫。其詳細情況如下:

  ·bufferoverflowU.lib:此函數庫具體實(shí)現安全性 cookie 驗證功能,此功能可以在用戶(hù)模式中使用,也可以在使用 Win32 API 的應用程序中使用。大多數應用程序將鏈接到這個(gè)函數庫。

  ·bufferoverflowK.lib:此函數庫具體實(shí)現在操作系統內核模式中執行的安全性 cookie 檢查。在內核模式中運行的服務(wù)與子系統應該鏈接到這個(gè)庫。

  ·bufferoverflow.lib:此函數庫具體實(shí)現可以在用戶(hù)模式中使用的安全性 cookie 驗證功能。不過(guò)它與 bufferoverflowU.lib 有所不同,它可以在不使用 Win32 API 的服務(wù)與應用程序中使用。

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

LINK 是將通用對象文件格式 (COFF) 對象文件和庫鏈接起來(lái)以創(chuàng )建 32 位可執行 (.exe) 文件或動(dòng)態(tài)鏈接
庫 (DLL) 的 32 位工具。

LINK 用法如下:

/ALIGN 指定每一節的對齊方式
/ALIGN 選項指定程序線(xiàn)性地址空間中每一節的對齊方式。number 參數以字節為單位,并且必須是2 的冪。默認值是 4K (4096)。如果對齊方式產(chǎn)生
無(wú)效的圖像,則鏈接器發(fā)出警告。除非正
在編寫(xiě)諸如設備驅動(dòng)程序的應用程序,否則應不需要修改對齊方式。
/DLL 生成 DLL
/DRIVER 創(chuàng )建 Windows NT 核心模式驅動(dòng)程序
/EXETYPE 生成虛擬設備驅動(dòng)程序
/EXETYPE:DYNAMIC 創(chuàng )建動(dòng)態(tài)加載的虛擬設備驅動(dòng)程序。
/EXETYPE:DEV386 創(chuàng )建靜態(tài)加載的虛擬設備驅動(dòng)程序。這是 /EXETYPE 的默認值
/INCREMENTAL 控制增量鏈接
/LARGEADDRESSAWARE 通知編譯器應用程序支持大于 2 GB 的地址
/LIBPATH 允許用戶(hù)重寫(xiě)環(huán)境庫路徑
/LIBPATH:"e:\VC\LIB" /LIBPATH:"e:\DX\LIB"
/MACHINE 指定目標平臺
` /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 選項。
/OPT 控制 LINK 優(yōu)化
如果生成僅運行于 Windows NT 或 Windows 2000 上的組件,則應使用 /OPT:NOWIN98。
/SUBSYSTEM: 指定子系統
{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|
EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|
WINDOWSCE}[,#[.##]]
/OUT 指定輸出文件名
/OUT:Hello.exe

精典用法:
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

rc 是資源編譯
/l 列出資源用的區域性
0x804 中國
0x409 美國
用法:
rc /l 0x804 file.rc
 

Link.exe中的常用參數
==============================================================
Link.exe是Masm和VC/VS中通用的。
其中Masm中的版本最低,我現在用的是5.12.8078
由于其版本原因,部分參數不支持。請用Link /?對照。

==============================================================
/ALIGN(節對齊)
    /ALIGN[:number]

    其中:number(對齊值)。

    /ALIGN 選項指定程序線(xiàn)性地址空間中每一節的對齊方式。number 參數以字節為單位,并且必須是 2 的冪。默認值是 4K (4096)。如果對齊方式產(chǎn)生無(wú)效的圖像,則鏈接器發(fā)出警告。
    除非正在編寫(xiě)諸如設備驅動(dòng)程序的應用程序,否則應不需要修改對齊方式。
    可以用 /SECTION 選項的對齊參數修改特定節的對齊方式。
    指定的對齊值不能小于最大的節對齊。

==============================================================
/BASE(基址)
    /BASE:{address[,size] | @filename,key}
    /BASE 選項設置程序的基址,重寫(xiě) .exe 文件(在 0x400000 處)或 DLL(在 0x10000000 處)的默認位置。操作系統首先嘗試在程序的指定或默認基址加載程序。如果該基址處沒(méi)有足夠的空間可用,則系統將重定位程序。若要防止重定位,請使用 /FIXED 選項。
    如果 address 不是 64K 的倍數,鏈接器將發(fā)出錯誤。您可以選擇指定程序的大小,以便鏈接器在程序超過(guò)您指定的大小時(shí)發(fā)出警告。

==============================================================
/DEBUG(生成調試信息)
    /DEBUG 選項創(chuàng )建 .exe 文件或 DLL 的調試信息。

    鏈接器將調試信息放在程序數據庫 (PDB) 中。它在后面的程序生成期間更新 PDB。
    為調試創(chuàng )建的 .exe 文件或 DLL 包含相應 PDB 的名稱(chēng)和路徑。調試器在您調試程序時(shí)讀取嵌入的名稱(chēng)并使用 PDB。鏈接器使用程序的基名稱(chēng)和擴展名 .pdb 命名程序數據庫,并嵌入它的創(chuàng )建路徑。若要重寫(xiě)該默認值,請設置 /PDB 并指定不同的文件名。
    編譯器的僅限行號 (/Zd) 或 C7 兼容 (/Z7) 選項使編譯器將調試信息保留在 .obj 文件中。還可以使用程序數據庫 (/Zi) 編譯器選項將調試信息存儲在 .obj 文件的 PDB 中。鏈接器首先在寫(xiě)入 .obj 文件的絕對路徑中查找對象的 PDB,然后在包含 .obj 文件的目錄中查找。不能指定對象的 PDB 文件名或鏈接器的位置。
    指定 /DEBUG 時(shí)暗含 /INCREMENTAL。
    /DEBUG 將 /OPT 選項的默認值從 REF 更改為 NOREF 以及從 ICF 更改為 NOICF(因此,需要顯式指定 /OPT:REF 或 /OPT:ICF)。

==============================================================
/DEF(指定模塊定義文件)
    /DEF:filename (要傳遞到鏈接器的模塊定義文件 (.def) 的名稱(chēng)。)
     備注
    /DEF 選項將模塊定義文件 (.def) 傳遞到鏈接器。只有一個(gè) .def 文件可以指定給 LINK。有關(guān) .def 文件的詳細信息,請參見(jiàn)模塊定義文件。
==============================================================
/DEFAULTLIB(指定默認庫)
    /DEFAULTLIB:library

    library    解析外部引用時(shí)搜索的庫名。

     備注
    /DEFAULTLIB 選項將一個(gè) library 添加到 LINK 在解析引用時(shí)搜索的庫列表。用 /DEFAULTLIB 指定的庫在命令行上指定的庫之后和 .obj 文件中指定的默認庫之前被搜索。

    忽略所有默認庫 (/NODEFAULTLIB) 選項重寫(xiě) /DEFAULTLIB:library。如果在兩者中指定了相同的 library 名稱(chēng),忽略庫 (/NODEFAULTLIB:library) 選項將重寫(xiě) /DEFAULTLIB:library。
==============================================================
/DLL(生成 DLL)
    /DLL 選項生成作為主輸出文件的 DLL。DLL 通常包含可由另一個(gè)程序使用的導出。有三種指定導出的方法,按照建議的使用順序依次為:
    源代碼中的 __declspec(dllexport)     (僅限C/C++語(yǔ)言使用)
    .def 文件中的 EXPORTS 語(yǔ)句
    LINK 命令中的 /EXPORT 規范

    程序可使用一種以上的方法。
    另一種生成 DLL 的方法是使用 LIBRARY 模塊定義語(yǔ)句。將 /BASE 和 /DLL 選項連用等效于 LIBRARY 語(yǔ)句。
==============================================================
/DRIVER(Windows NT 內核模式驅動(dòng)程序)
    /DRIVER[:UPONLY | :WDM]
    使用 /DRIVER 鏈接器選項生成 Windows NT 內核模式驅動(dòng)程序。

    /DRIVER:UPONLY 使鏈接器將 IMAGE_FILE_UP_SYSTEM_ONLY 位添加到輸出頭的特性中,以指定它是單處理器 (UP) 驅動(dòng)程序。操作系統將拒絕在多處理器 (MP) 系統上加載 UP 驅動(dòng)程序。
    /DRIVER:WDM 使鏈接器設置可選頭的 DllCharacteristics 字段中的 IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 位。

    如果未指定 /DRIVER,則鏈接器不會(huì )設置這些位。
    如果指定了 /DRIVER:
    /FIXED:NO 有效 ( /FIXED(固定基址))。
    輸出文件的擴展名將為 .sys。使用 /OUT 更改默認文件名和擴展名 ( /OUT(輸出文件名))。
==============================================================
/ENTRY(入口點(diǎn)符號)
    /ENTRY:function

    function
    一個(gè)函數,指定 .exe 文件或 DLL 的用戶(hù)定義起始地址。

     備注
    /ENTRY 選項指定一個(gè)入口點(diǎn)函數作為 .exe 文件或 DLL 的起始地址。
    必須用 __stdcall 調用約定來(lái)定義函數。必須按 WinMain(對于 .exe 文件)或 DllEntryPoint(對于 DLL)的 Win32 API 中記錄的內容定義參數和返回值。建議讓鏈接器設置入口點(diǎn),以便 C 運行時(shí)庫正確初始化,并執行靜態(tài)對象的 C++ 構造函數。

    默認情況下的入口點(diǎn)函數如下
     使用 /SUBSYSTEM:CONSOLE 的應用程序;調用 main(或 wmain)
     使用 /SUBSYSTEM:WINDOWS 的應用程序;調用 WinMain(或 wWinMain),它必須用 __stdcall 來(lái)定義
     DLL;調用 DllMain(如果存在),DllMain 必須用 __stdcall 來(lái)定義

==============================================================
/EXPORT(導出函數)
    /EXPORT:entryname[,@ordinal[,NONAME]][,DATA]
     備注
    使用該選項,可以從程序導出函數,以便其他程序可以調用該函數。也可以導出數據。通常在 DLL 中定義導出。
    entryname 是調用程序要使用的函數或數據項的名稱(chēng)。ordinal 在導出表中指定范圍在 1 至 65,535 的索引;如果沒(méi)有指定 ordinal,則 LINK 將分配一個(gè)。NONAME 關(guān)鍵字只將函數導出為序號,沒(méi)有 entryname。
    有三種導出定義的方法,按照建議的使用順序依次為:
    源代碼中的 __declspec(dllexport) (僅限C/C++語(yǔ)言)
    .def 文件中的 EXPORTS 語(yǔ)句
    LINK 命令中的 /EXPORT 規范
==============================================================
/FIXED(固定基址)
    /FIXED[:NO]
     備注
    /FIXED 選項通知操作系統只在其首選基址加載程序。如果首選基址不可用,則操作系統將不加載該文件。有關(guān)更多信息,請參見(jiàn) /BASE(基址)。
    默認情況下,/FIXED:NO 是生成 DLL 時(shí)的默認值,/FIXED 是任何其他項目類(lèi)型的默認值。
    當指定 /FIXED 時(shí),LINK 不生成程序中的重定位節。在運行時(shí),如果操作系統無(wú)法在該地址加載程序,它將發(fā)出錯誤信息并且不加載該程序。
    指定 /FIXED:NO 以在程序中生成重定位節。
    不要在生成 Windows NT 的設備驅動(dòng)程序時(shí)使用 /FIXED。
==============================================================
/HEAP(設置堆大?。?br>    /HEAP:reserve[,commit]
     備注
    /HEAP 選項設置堆的大?。ㄒ宰止潪閱挝唬?。此選項僅在生成 .exe 文件時(shí)使用。
    reserve 參數指定虛擬內存中總的堆分配。默認堆大小為 1 MB。鏈接器將指定值向上舍入為最接近的 4 個(gè)字節。
    可選 commit 參數取決于操作系統的解釋。在 Windows NT/Windows 2000 中,它指定一次分配的物理內存的數量。提交的虛擬內存導致空間被保留在頁(yè)面文件中。更高的 commit 值在應用程序需要更多堆空間時(shí)可節省時(shí)間,但會(huì )增加內存需求并有可能延長(cháng)啟動(dòng)時(shí)間。
    以十進(jìn)制或 C 語(yǔ)言表示法指定 reserve 值和 commit 值。
    通過(guò)帶 HEAPSIZE 的模塊定義文件也可以實(shí)現該功能。
==============================================================
/INCLUDE(強制符號引用)
    /INCLUDE:symbol
    其中:
    symbol
    指定要添加到符號表的符號。

     備注
    /INCLUDE 選項通知鏈接器將指定的符號添加到符號表。
    若要指定多個(gè)符號,請在符號名稱(chēng)之間鍵入逗號 (,)、分號 (;) 或空格。在命令行上,對每個(gè)符號指定一次 /INCLUDE:symbol。
    鏈接器通過(guò)將包含符號定義的對象添加到程序來(lái)解析 symbol。該功能對于添包含不會(huì )鏈接到程序的庫對象非常有用。
    用該選項指定符號將通過(guò) /OPT:REF 重寫(xiě)該符號的移除。
==============================================================
/LIBPATH(附加的 Libpath)
    /LIBPATH:dir
    其中:
    dir
    在鏈接器搜索 LIB 環(huán)境選項中指定的路徑之前,指定它將要搜索的路徑。

     備注
    使用 /LIBPATH 選項重寫(xiě)環(huán)境庫路徑。鏈接器將首先在該選項所指定的路徑中搜索,然后在 LIB 環(huán)境變量中所指定的路徑中搜索。對于您輸入的每個(gè) /LIBPATH 選項,只能指定一個(gè)目錄。如果要指定一個(gè)以上的目錄,則必須指定多個(gè) /LIBPATH 選項。鏈接器然后將按順序搜索指定的目錄。
==============================================================
/MACHINE(指定目標平臺)
    /MACHINE:{ARM|EBC|IA64|MIPS|MIPS16|MIPSFPU|MIPSFPU16|          SH4|THUMB|X64|X86}
     備注
    /MACHINE 選項指定程序的目標平臺。

    通常情況下,不需要指定 /MACHINE 選項。LINK 從 .obj 文件中推斷出計算機類(lèi)型。但在某些情況下,LINK 無(wú)法確定計算機類(lèi)型并發(fā)出鏈接器工具錯誤 LNK1113。如果發(fā)生了此類(lèi)錯誤,請指定 /MACHINE。
==============================================================
/MAP(生成映射文件)
    /MAP[:filename]
    其中:
    filename
    用戶(hù)指定的映射文件名稱(chēng)。它將替換默認名稱(chēng)。

     備注
    /MAP 選項通知鏈接器創(chuàng )建映射文件。
    默認情況下,鏈接器用程序的基名稱(chēng)和擴展名 .map 命名映射文件??蛇x的 filename 使您得以重寫(xiě)映射文件的默認名稱(chēng)。
    映射文件是一個(gè)文本文件,包含有關(guān)被鏈接程序的下列信息:
    模塊名稱(chēng),為文件的基名稱(chēng)
    時(shí)間戳,來(lái)自程序文件頭(不是來(lái)自文件系統)
    程序中的組列表,包括每個(gè)組的起始地址(節:偏移量的形式)、長(cháng)度、組名和類(lèi)
    公共符號的列表,包括每個(gè)地址(節:偏移量的形式)、符號名稱(chēng)、平直地址和包含符號定義的 .obj 文件
    入口點(diǎn)(節:偏移量的形式)
    /MAPINFO 選項指定要包括在映射文件中的附加信息。
==============================================================
/MAPINFO(包含映射文件中的信息)
    /MAPINFO:EXPORTS
     備注
    /MAPINFO 選項通知鏈接器包含映射文件中指定的信息,如果指定 /MAP 選項,則創(chuàng )建該映射文件。EXPORTS 通知鏈接器包含導出函數。
==============================================================
/MERGE(合并節)
    /MERGE:from=to

    /MERGE 選項將第一個(gè)節 (from) 和第二個(gè)節 (to) 合并在一起,將結果節命名為 to。例如 /merge:.rdata=.text。
    如果第二個(gè)節不存在,則 LINK 將節 from 重命名為 to。
    /MERGE 選項對于創(chuàng )建 VxD 和重寫(xiě)編譯器生成的節名非常有用。
==============================================================
/NODEFAULTLIB(忽略庫)
    /NODEFAULTLIB[:library]
    其中:
    library
    當鏈接器解析外部引用時(shí)使鏈接器忽略的庫。

     備注
    /NODEFAULTLIB 選項通知鏈接器將一個(gè)或多個(gè)默認庫從鏈接器解析外部引用時(shí)所搜索的庫列表中移除。
    要創(chuàng )建一個(gè)不包含默認庫引用的 .obj 文件,請使用 /Zl(省略默認庫名)。
    默認情況下,/NODEFAULTLIB 從它解析外部引用時(shí)所搜索的庫列表中移除所有默認庫??蛇x library 參數使您得以將指定的庫從它解析外部引用時(shí)所搜索的庫列表中移除。為每個(gè)要排除的庫指定一個(gè) /NODEFAULTLIB 選項。
    鏈接器解析外部定義的引用時(shí),首先通過(guò)在您顯式指定的庫中搜索,然后在用 /DEFAULTLIB 選項指定的默認庫中搜索,最后在 .obj 文件中命名的默認庫中搜索。
    /NODEFAULTLIB:library 重寫(xiě) /DEFAULTLIB:library(如果在這兩者中指定相同的 library 名稱(chēng))。
    例如,如果在沒(méi)有 C 運行時(shí)庫情況下使用 /NODEFAULTLIB 生成程序,可能還需要使用 /ENTRY 指定程序中的入口點(diǎn)(函數)。有關(guān)更多信息,請參見(jiàn) C Run-Time Libraries。
==============================================================
/NOENTRY(無(wú)入口點(diǎn))
    /NOENTRY
     備注
    創(chuàng )建純資源 DLL 時(shí)要求 /NOENTRY 選項。
==============================================================
/NOLOGO(取消顯示啟動(dòng)版權標志)(鏈接器)
    /NOLOGO

     備注
    /NOLOGO 選項防止顯示版權消息和版本號。
    該選項還取消命令文件的回顯。有關(guān)詳細信息,請參見(jiàn) LINK 命令文件。
    默認情況下,該信息由鏈接器發(fā)送到“輸出”窗口。在命令行上,它被發(fā)送到標準輸出并可以重定向到文件。
==============================================================
/OPT(優(yōu)化)
    控制 LINK 在生成期間執行的優(yōu)化。

    /OPT:{REF | NOREF}
    /OPT:{ICF[=iterations] | NOICF}
    /OPT:{WIN98 | NOWIN98}
     參數
    REF | NOREF
    /OPT:REF 清除從未引用的函數和/或數據,而 /OPT:NOREF 保留從未引用的函數和/或數據。
    默認情況下,LINK 移除未引用的封裝函數。如果對象已經(jīng)用 /Gy 選項編譯過(guò),它包含封裝函數 (COMDAT)。此優(yōu)化稱(chēng)為可傳遞的 COMDAT 消除。若要重寫(xiě)該默認值并在程序中保留未引用的 COMDAT,請指定 /OPT:NOREF??梢允褂?/INCLUDE 選項重寫(xiě)特定符號的移除。
    如果指定了 /DEBUG,/OPT 的默認項是 NOREF(否則,為 REF),而且所有函數都保留在映像中。若要重寫(xiě)此默認項并優(yōu)化調試生成,請指定 /OPT:REF。/OPT:REF 選項禁用增量鏈接。
    必須顯式地將數據標記為 COMDAT;使用 __declspec(selectany)。
    如果指定了 /OPT:REF,默認情況下 /OPT:ICF 處于打開(kāi)狀態(tài)。如果需要 /OPT:REF 而不是 /OPT:ICF,則必須指定下面的內容:
    link /opt:ref /opt:noicf
    指定 /OPT:ICF 不激活 /OPT:REF 選項。
    ICF[= iterations ] | NOICF
    使用 /OPT:ICF[=iterations] 執行相同的 COMDAT 折疊??梢詮逆溄悠鬏敵鲋幸瞥嘤嗟?COMDAT。iteration 指定遍歷符號以查找重復項的次數。默認迭代次數是兩次。附加的迭代可以找到前一次迭代中通過(guò)折疊未發(fā)現的重復項。
    請注意,默認情況下 ICF 有效時(shí)(顯式指定 /OPT:REF),與顯式指定 /OPT:REF,ICF 時(shí),鏈接器行為是有區別的。默認的帶 /OPT:REF 的 ICF 不折疊只讀數據。這包括任何 .rdata、.pdata 和 .xdata。但是,默認的帶 /OPT:REF 的 ICF 導致在為 Itanium 和 x64 生成映像時(shí)折疊較少的函數,因為這些模塊中的函數具有更多的只讀數據依賴(lài)項,例如 .pdata 和 .xdata。若要獲得完整的 ICF,請顯式指定 /OPT:ICF。
    函數通過(guò) /Gy 編譯器選項放在 COMDAT 中,常數數據放在 COMDAT 中。有關(guān)如何為折疊指定數據的示例,請參見(jiàn) selectany。
    如果 REF 處于打開(kāi)狀態(tài)并且需要在調試生成中顯式打開(kāi),則默認情況下 ICF 處于打開(kāi)狀態(tài)。如果指定了 REF,則可以指定 NOICF。
    注意
    /OPT:ICF 可導致相同的地址分配到不同的函數或只讀數據成員(用 /Gy 編譯的常數變量)。因此,/OPT:ICF 可中斷依賴(lài)于不同的函數或只讀數據成員的地址的程序。有關(guān)更多信息,請參見(jiàn) /Gy(啟用函數級鏈接)。
    
    WIN98 | NOWIN98
    WIN98 和 NOWIN98 控制最終映像中的節對齊。對于 Windows 98 應用程序,最好是在 4K 的邊界上對齊節,以改進(jìn)加載時(shí)間(允許 Windows 98 內存管理器緩存可執行圖像同時(shí)最少化浪費的空間)。默認情況下,此選項在鏈接器中是打開(kāi)的,因此需要指定 /OPT:NOWIN98 以獲得精簡(jiǎn)(但在 Windows 98 上較慢)的應用程序版本。

    默認情況下,WIN98 處于打開(kāi)狀態(tài)。WIN98 在下列情況下是關(guān)閉的:
    使用了 /ALIGN。
    /MACHINE 的目標不是 x86。
    /SUBSYSTEM 指定 WINDOWS 或 CONSOLE 以外的內容。

     備注
    優(yōu)化通常是以增加鏈接時(shí)間為代價(jià),減小圖像大小并加快程序速度。
    可使用 /VERBOSE 選項查看由 /OPT:REF 移除的函數和由 /OPT:ICF 折疊的函數。
==============================================================
/ORDER(按順序放置函數)
    /ORDER:@filename
     參數
    filename
    指定 COMDAT 函數鏈接順序的文本文件。

     備注
    /ORDER 選項通知 LINK 按預先確定的順序將特定的 COMDAT 放置到圖像中以?xún)?yōu)化程序。LINK 按指定的順序在圖像的每個(gè)節中放置函數。
    在 filename 中指定順序。filename 是按照您希望鏈接 COMDAT 的順序列出 COMDAT 的文本文件(響應文件)。filename 中的每一行包含一個(gè) COMDAT 的名稱(chēng)。如果對象已經(jīng)用 /Gy 選項編譯過(guò),它包含 COMDAT。函數名區分大小寫(xiě)。
    LINK 使用標識符的修飾形式。編譯器在創(chuàng )建 .obj 文件時(shí)修飾標識符。當需要將標識符的修飾形式指定給鏈接器時(shí),可使用 DUMPBIN 工具獲取它。有關(guān)修飾名的更多信息,請參見(jiàn)修飾名。
    如果使用了多個(gè) /ORDER 規范,指定的最后一個(gè)規范有效。
    排序允許將一個(gè)函數與該函數調用的函數組合,通過(guò)交換優(yōu)化來(lái)優(yōu)化程序的分頁(yè)行為。還可將經(jīng)常調用的函數分在一組。這些技術(shù)增加了調用的函數在需要它時(shí)位于內存中從而不必從磁盤(pán)分頁(yè)的可能性。
    鏈接器在 filename 中的每個(gè)修飾名前放置一個(gè)下劃線(xiàn) (_),只要名稱(chēng)不是以問(wèn)號 (?) 或 at 符 (@) 開(kāi)頭。例如,如果對象文件包含 extern "C" int func(int) 和 int main(void),則 DUMPBIN /SYMBOLS 將列出這些修飾名:
    009 00000000 SECT3 notype ()    External     | _func
    00A 00000008 SECT3 notype ()    External     | _main
    不過(guò),在順序文件中指定的名稱(chēng)應為 func 和 main。
    /ORDER 選項禁用增量鏈接。
    注意
    LINK 無(wú)法對靜態(tài)函數進(jìn)行排序,因為靜態(tài)函數名不是公共符號名。如果指定了 /ORDER,在順序文件中將為每個(gè)靜態(tài)的或者沒(méi)有找到的符號生成鏈接器警告 LNK4037。
==============================================================
/OUT(輸出文件名)
    /OUT:filename
    其中:
    filename
    用戶(hù)指定的輸出文件名。它將替換默認名稱(chēng)。

     備注
    /OUT 選項重寫(xiě)鏈接器創(chuàng )建的程序的默認名稱(chēng)和位置。
    默認情況下,鏈接器用指定的第一個(gè) .obj 文件的基名稱(chēng)和適當的擴展名(.exe 或 .dll)來(lái)組成文件名。
    該選項設置 .mapfile 或導入庫的默認基名稱(chēng)。有關(guān)詳細信息,請參見(jiàn)生成映射文件 (/MAP) 和 /IMPLIB。
==============================================================
/RELEASE(設置校驗和)
    /RELEASE

     備注
    /RELEASE 選項在 .exe 文件頭中設置校驗和。
    操作系統要求設備驅動(dòng)程序的校驗和。為設備驅動(dòng)程序的發(fā)布版本設置校驗和,以確保與未來(lái)的操作系統兼容。
    當指定 /SUBSYSTEM:NATIVE 選項時(shí),默認情況下設置 /RELEASE 選項。
==============================================================
/SECTION(指定節屬性)
    /SECTION:name,[[!]{DEKPRSW}][,ALIGN=#]

     備注
    /SECTION 選項更改節的屬性,當節的 .obj 文件被編譯時(shí)重寫(xiě)屬性集。
    可移植可執行 (PE) 文件中的節大致等效于新的可執行 (NE) 文件中的段或資源。節包含代碼或數據。與段不同,節是連續內存的塊,沒(méi)有大小限制。有些節包含程序聲明和直接使用的代碼或數據,而有些數據節是由鏈接器和庫管理器 (lib.exe) 創(chuàng )建的,包含了對操作系統來(lái)說(shuō)至關(guān)重要的信息。有關(guān) NE 文件的更多信息,請參見(jiàn)知識庫文章“Executable-File Header Format”(Q65122)??梢栽?MSDN Library 中或
http://support.microsoft.com/default.aspx?ln=zh-cn 上找到知識庫文章。
    指定冒號 (:) 和節 name。name 區分大小寫(xiě)。
    不要使用以下名稱(chēng),因為它們與標準名稱(chēng)沖突。例如,.sdata 用在 RISC 平臺上:
    .arch
    .bss
    .data
    .edata
    .idata
    .pdata
    .rdata
    .reloc
    .rsrc
    .sbss
    .sdata
    .srdata
    .text
    .xdata
    為節指定一個(gè)或多個(gè)屬性。以下列出的屬性字符不區分大小寫(xiě)。必須指定您希望節具有的所有屬性;省略的屬性字符將導致該屬性位被關(guān)閉。如果不指定 R、W 或 E,則現有的讀、寫(xiě)或可執行狀態(tài)保持不變。
    若要取反屬性,請在屬性字符前使用一個(gè)感嘆號 (!)。屬性字符的含義如下所示:
    字符    屬性        含義
    E    Execute        節是可執行的
    R    Read        允許對數據進(jìn)行讀取操作
    W    Write        允許對數據進(jìn)行寫(xiě)操作
    S    Shared        在所有加載圖像的進(jìn)程中共享節
    D    Discardable    將節標記為可放棄
    K    Cacheable    將節標記為不可緩存
    P    Pageable        將節標記為不可分頁(yè)
    
    K 和 P 比較特殊,因為與其對應的節標志表示相反的含義。如果在 .text 節 (/SECTION:.text,K) 上指定它們之中的一個(gè),當運行帶 /HEADERS 選項 Dumpbin 時(shí)在節標志中將沒(méi)有區別;它已被隱式緩存了。若要移除默認值,請指定 /SECTION:.text,!K,DUMPBIN 將顯示節特性,包括“未緩存?!?。
    沒(méi)有設置 E、R 或 W 的 PE 文件中的節可能無(wú)效。
    ALIGN=# 使您得以為特定的節指定對齊值。有關(guān)更多信息,請參見(jiàn) /ALIGN。
==============================================================
/STACK(堆棧分配)
    /STACK:reserve[,commit]

     備注
    /STACK 選項設置堆棧的大?。ㄒ宰止潪閱挝唬?。此選項僅在生成 .exe 文件時(shí)使用。
    該選項指定虛擬內存中的總的堆棧分配。默認堆棧大小為 1 MB。鏈接器將指定值向上舍入為最接近的 4 個(gè)字節。
    commit 取決于操作系統所作的解釋。在 Windows NT 和 Windows 2000 中,它指定一次分配的物理內存量。提交的虛擬內存導致空間被保留在頁(yè)面文件中。更高的 commit 值在應用程序需要更多堆??臻g時(shí)可節省時(shí)間,但會(huì )增加內存需求并有可能延長(cháng)啟動(dòng)時(shí)間。
    以十進(jìn)制或 C 語(yǔ)言表示法指定 reserve 值和 commit 值。
    設置堆棧大小的另一種方法是使用模塊定義 (.def) 文件中的 STACKSIZE 語(yǔ)句。如果兩者都指定,則 STACKSIZE 重寫(xiě)堆棧分配 (/STACK) 選項??梢允褂?EDITBIN 工具在生成 .exe 文件之后更改堆棧。
==============================================================
/STUB(MS-DOS 存根 (stub) 文件名)
    /STUB:filename
    其中:
    filename
    MS-DOS 應用程序。

     備注
    /STUB 選項將 MS-DOS 存根 (stub) 程序附加到 Win32 程序。
    如果在 MS-DOS 中執行文件,則將調用存根 (stub) 程序。它通常顯示適當的消息;然而,任何有效的 MS-DOS 應用程序都可以是存根 (stub) 程序。
    在命令行上冒號 (:) 之后,為存根 (stub) 程序指定 filename。如果文件不是可執行文件,則鏈接器檢查 filename 并發(fā)出錯誤信息。程序必須是 .exe 文件;.com 文件對于存根 (stub) 程序無(wú)效。
    如果不使用該選項,則鏈接器附加發(fā)出以下消息的默認存根 (stub) 程序:
    This program cannot be run in MS-DOS mode.
    當生成虛擬設備驅動(dòng)程序時(shí),filename 使用戶(hù)得以指定文件名,該文件名包含要用于 VXD 中而不是默認頭的 IMAGE_DOS_HEADER 結構(在 WINNT.H 中定義)。
==============================================================
/SUBSYSTEM(指定子系統)
    /SUBSYSTEM:{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|
    EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|WINDOWSCE}
    [,major[.minor]]

     備注
    其中:
    CONSOLE
    Win32 字符模式應用程序??刂婆_應用程序是操作系統提供的控制臺。如果定義 main 或 wmain,則 CONSOLE 為默認值。
    可擴展固件接口
    EFI_* 子系統。有關(guān)更多信息,請參見(jiàn) EFI 規范。有關(guān)示例,請參見(jiàn) Intel 網(wǎng)站。最低和默認版本為 1.0。
    NATIVE
    Windows NT 的設備驅動(dòng)程序。如果指定 /DRIVER:WDM,則 NATIVE 為默認值。
    POSIX
    在 Windows NT 中與 POSIX 子系統運行的應用程序。
    WINDOWS
    應用程序并不需要控制臺,因為它可以創(chuàng )建自己的用戶(hù)交互窗口。如果定義 WinMain 或 wWinMain,則 WINDOWS 為默認值。
    WINDOWSCE
    在 Windows CE 設備上運行的應用程序。
    major 和 minor(可選)
    指定子系統的要求的最低版本。參數為 0 到 65,535 之間的十進(jìn)制數。有關(guān)詳細信息,請參見(jiàn)“備注”。版本號沒(méi)有上限。

     備注
    /SUBSYSTEM 選項通知操作系統如何運行 .exe 文件。
==============================================================
/VERSION(版本信息)
    /VERSION:major[.minor]
    其中:
    major 和 minor
    希望 .exe 或 .dll 文件頭中包含的版本號。

     備注
    /VERSION 選項通知鏈接器將版本號放置在 .exe 或 .dll 文件頭中。使用 DUMPBIN /HEADERS 查看 OPTIONAL HEADER VALUES 的圖像版本字段,以查看 /VERSION 的效果。
    major 和 minor 參數是從 0 到 65,535 的范圍內的十進(jìn)制數。默認值為 0.0 版。
    用 /VERSION 指定的信息不影響在 Windows 資源管理器中查看應用程序屬性時(shí)所顯示的應用程序的版本信息。該版本信息來(lái)自用于生成應用程序的資源文件。有關(guān)更多信息,請參見(jiàn)版本信息編輯器。
    另一種插入版本號的方法是用 VERSION 模塊定義語(yǔ)句。
==============================================================
/VERBOSE(打印進(jìn)度消息)
    /VERBOSE[:ICF |:LIB |:REF |:SAFESEH]

     備注
    鏈接器將有關(guān)鏈接會(huì )話(huà)進(jìn)度的信息發(fā)送到“輸出”窗口。在命令行上,信息被發(fā)送到標準輸出,并可以重定向到文件。
    選項 說(shuō)明
    /VERBOSE
     顯示有關(guān)鏈接進(jìn)度的詳細信息。
    /VERBOSE:ICF
     顯示關(guān)于從使用 /OPT:ICF 中產(chǎn)生的鏈接器活動(dòng)的信息。
    /VERBOSE:LIB
     顯示進(jìn)度消息,僅指示所搜索的庫。
    所顯示的信息包括庫搜索進(jìn)程,同時(shí)還列出每個(gè)庫和對象名(包括完整路徑),正從庫中解析的符號,以及引用該符號的對象的列表。
    /VERBOSE:REF
     顯示關(guān)于從使用 /OPT:REF 中產(chǎn)生的鏈接器活動(dòng)的信息。
    /VERBOSE:SAFESEH
     顯示與在未指定 /SAFESEH 時(shí)哪些模塊與安全異常處理不兼容的有關(guān)信息。
==============================================================
/WX(將鏈接器警告視為錯誤)
    /WX[:NO]

     備注
    如果鏈接器生成警告,/WX 將不會(huì )生成任何輸出文件。
    這與編譯器的 /WX 類(lèi)似(有關(guān)更多信息,請參見(jiàn) /w、/Wn、/WX、/Wall、/wln、/wdn、/wen、/won(警告等級))。但是,為編譯指定 /WX 并不意味著(zhù) /WX 在鏈接階段同樣有效;必須為每種工具都顯式指定 /WX。
    默認情況下,/WX 不起作用。若要將鏈接器警告視為錯誤,請指定 /WX。/WX:NO 等同于不指定 /WX。
==============================================================

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
深入探究VC
VS2005、VS2008中如何屏蔽討厭的MSVCR*.dll的引用
vc編譯exe的體積最小優(yōu)化
庫文件
VC 快速創(chuàng )建多層文件夾?。ㄞD)
使用VS2015創(chuàng )建 純C的DLL及其調用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久