链接器选项

LINK.exe 将通用对象文件格式 (COFF) 对象文件和库进行链接,以创建可执行文件 (EXE) 或动态链接库 (DLL)。

下表列出了 LINK.exe 的选项。 有关 LINK 的详细信息,请参阅:

在命令行上,链接器选项不区分大小写,例如,/base/BASE 的含义相同。 有关如何在命令行或 Visual Studio 中指定每个选项的详细信息,请参阅适用于该选项的文档。

可使用 comment 杂注指定一些链接器选项。

按字母顺序列出的链接器选项

选项 目的
@ 指定响应文件。
/ALIGN 指定每一节的对齐方式。
/ALLOWBIND 指定 DLL 不能绑定。
/ALLOWISOLATION 指定清单查找的行为。
/APPCONTAINER 指定应用是否必须在 appcontainer 进程环境中运行。
/ARM64XFUNCTIONPADMINX64 指定 ARM64X 映像中 x64 函数之间的最小填充字节数。17.8
/ASSEMBLYDEBUG DebuggableAttribute 添加到托管映像中。
/ASSEMBLYLINKRESOURCE 创建指向托管资源的链接。
/ASSEMBLYMODULE 指定应将 Microsoft 中间语言 (MSIL) 模块导入到程序集中。
/ASSEMBLYRESOURCE 将托管资源文件嵌入程序集。
/BASE 为程序设置基址。
/CETCOMPAT 将二进制文件标记为 CET 阴影堆栈兼容。
/CGTHREADS 设置 cl.exe 线程数以在指定链接时代码生成后用于优化和代码生成。
/CLRIMAGETYPE 设置 CLR 映像的类型(IJW、纯或安全)。
/CLRSUPPORTLASTERROR 保留通过 P/Invoke 机制调用的函数的上一个错误代码。
/CLRTHREADATTRIBUTE 指定要应用于 CLR 程序入口点的线程特性。
/CLRUNMANAGEDCODECHECK 指定链接器是否将 SuppressUnmanagedCodeSecurity 特性应用于链接器生成的 P/Invoke 存根,这些存根从托管代码调用到本机 DLL 中。
/DEBUG 创建调试信息。
/DEBUGTYPE 指定要包括在调试信息中的数据。
/DEF 将模块定义 (.def) 文件传递到链接器。
/DEFAULTLIB 在解析外部引用时搜索指定的库。
/DELAY 控制 DLL 的延迟加载。
/DELAYLOAD 导致延迟加载指定的 DLL。
/DELAYSIGN 对程序集进行部分签名。
/DEPENDENTLOADFLAG 设置依赖 DLL 加载的默认标志。
/DLL 生成 DLL。
/DRIVER 创建内核模式驱动程序。
/DYNAMICBASE 使用地址空间布局随机化 (ASLR) 功能,指定是否生成在加载时重新设定基址的可执行文件映像。
/ENTRY 设置起始地址。
/ERRORREPORT 已弃用。 错误报告由 Windows 错误报告 (WER) 设置控制。
/EXPORT 导出函数。
/FILEALIGN 按指定值的倍数对齐输出文件中各节。
/FIXED 创建只能在其首选基址加载的程序。
/FORCE 强制完成链接,即使符号无法解析或已定义多次。
/FUNCTIONPADMIN 创建可进行热修补的映像。
/GENPROFILE, /FASTGENPROFILE 这两个选项均通过链接器指定 .pgd 文件的生成,以支持按配置文件优化 (PGO)。 /GENPROFILE 和 /FASTGENPROFILE 使用不同的默认参数。
/GUARD 启用控制流防护保护。
/HEAP 设置堆的大小(以字节为单位)。
/HIGHENTROPYVA 指定对高熵 64 位地址空间布局随机化 (ASLR) 的支持。
/IDLOUT 指定 .idl 文件和其他 MIDL 输出文件的名称。
/IGNORE 禁止显示指定链接器警告的输出。
/IGNOREIDL 防止将属性信息处理到 .idl 文件中。
/ILK 重写默认的增量数据库文件名。
/IMPLIB 重写默认的导入库名。
/INCLUDE 强制符号引用。
/INCREMENTAL 控制增量链接。
/INFERASANLIBS 使用推断擦除器库。
/INTEGRITYCHECK 指定模块需要在加载时进行签名检查。
/KERNEL 创建内核模式二进制。
/KEYCONTAINER 指定用来对程序集进行签名的密钥容器。
/KEYFILE 指定用来对程序集进行签名的密钥或密钥对。
/LARGEADDRESSAWARE 通知编译器应用程序支持大于 2 GB 的地址
/LIBPATH 指定要在环境库路径之前搜索的路径。
/LINKREPRO 指定要在其中生成链接重现工件的路径。
/LINKREPROTARGET 仅在生成指定目标时生成链接重现。16.1
/LTCG 指定链接时间代码生成。
/MACHINE 指定目标平台。
/MANIFEST 创建并行清单文件,也可以选择将其嵌入二进制文件。
/MANIFESTDEPENDENCY 指定清单文件中的 <dependentAssembly> 节。
/MANIFESTFILE 更改清单文件的默认名称。
/MANIFESTINPUT 指定链接器要进行处理并嵌入二进制文件的清单输入文件。 可以多次使用此选项以指定多个清单输入文件。
/MANIFESTUAC 指定是否将用户帐户控制 (UAC) 信息嵌入到程序清单中。
/MAP 创建映射文件。
/MAPINFO 包括映射文件中的指定信息。
/MERGE 合并节。
/MIDL 指定 MIDL 命令行选项。
/NATVIS 将调试程序可视化工具从 Natvis 文件添加到程序数据库 (PDB)。
/NOASSEMBLY 取消创建 .NET Framework 程序集。
/NODEFAULTLIB 在解析外部引用时忽略所有(或指定的)默认库。
/NOENTRY 创建纯资源 DLL。
/NOFUNCTIONPADSECTION 为指定节中的函数禁用函数填充。17.8
/NOLOGO 取消显示启动版权标志。
/NXCOMPAT 将可执行文件标记为经验证与 Windows 数据执行保护功能兼容。
/OPT 控制 LINK 优化。
/ORDER 按预先确定的顺序将 COMDAT 放置到映像中。
/OUT 指定输出文件名。
/PDB 创建 PDB 文件。
/PDBALTPATH 使用备用位置来保存 PDB 文件。
/PDBSTRIPPED 创建没有私有符号的 PDB 文件。
/PGD 为按配置文件优化指定 .pgd 文件。
/POGOSAFEMODE 已过时,创建线程安全的 PGO 检测的生成。
/PROFILE 生成一个可与“性能工具”探查器结合使用的输出文件。
/RELEASE .exe 标头中设置校验和。
/SAFESEH 指定映像将包含安全异常处理程序表。
/SECTION 重写节的特性。
/SOURCELINK 指定要添加到 PDB 的 SourceLink 文件。
/STACK 设置堆栈的大小(以字节为单位)。
/STUB 将 MS-DOS 存根程序附加到 Win32 程序。
/SUBSYSTEM 通知操作系统如何运行 .exe 文件。
/SWAPRUN 通知操作系统在运行链接器输出之前将其复制到一个交换文件。
/TIME 输出链接器传递计时信息。
/TLBID 指定链接器生成的类型库的资源 ID。
/TLBOUT 指定 .tlb 文件和其他 MIDL 输出文件的名称。
/TSAWARE 创建专为在终端服务器下运行而设计的应用程序。
/USEPROFILE 使用按配置优化训练数据来创建优化的映像。
/VERBOSE 打印链接器进度消息。
/VERSION 分配版本号。
/WHOLEARCHIVE 包括指定静态库中的每个对象文件。
/WINMD 允许生成 Windows 运行时元数据文件。
/WINMDFILE 指定由 /WINMD 链接器选项生成的 Windows 运行时元数据 (winmd) 输出文件的文件名。
/WINMDKEYFILE 指定用来对 Windows 运行时元数据文件进行签名的密钥或密钥对。
/WINMDKEYCONTAINER 指定用来对 Windows 元数据文件进行签名的密钥容器。
/WINMDDELAYSIGN 通过将公钥放置在 winmd 文件中,对 Windows 运行时元数据文件 (.winmd) 进行部分签名。
/WX 将链接器警告视为错误。

16.1 此选项自 Visual Studio 2019 版本 16.1 起可用。
17.8 此选项自 Visual Studio 2022 版本 17.8 起可用。

另请参阅

C/C++ 生成参考
MSVC 链接器参考