cl.用法详解

阅读: 评论:0

< 用法详解
<是控制Microsoft C和C++编译器与链接器的32位工具。编译器产生通用对象文件格式(COFF)
对象(.obj)文件。链接器产生可执行文件(.exe)或动态链接库文件(DLL)。默认情况下cl.exe编译完后自动调用进行连接.所以通常cl a.cpp后会生成两个文件:a.obj和
<;
注意,所有编译器选项都区分大小写。
注:运行cl a.cpp可能需要在c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat注册环境变量.
vc目录下的cl.exe编译程序环境变量的配置方法
在“我的电脑--属性--高级--环境变量”中,添加如下变量:
INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\Include
LIB
C:\Program Files\Microsoft Visual Studio\VC98\Lib
PATH
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\VC98\Bin
C表示安装盘符,注意这里是两个路径,因为cl.exe要用到MSDev98\Bin目录下的MSPDB60.DLL。
如果已经存在这些变量,则把以上值分别加在对应的变量值的后面,注意在添加前用分号隔开。
用法如下:
][option|file]...[][@command-file][/]
option:一个或多个CL选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个
正斜杠(/)或一个短划线(-)指定的。如果某个选项带有参数,则该选项的说明指
定在选项和参数之间是否允许有空格。选项名(/HELP选项除外)区分大小写。有关
更多信息,请参见CL选项的顺序。
/c:编译但不链接
/Zs:检查语法
/?:列出编译器选项
/arch:使用SSE或SSE2指令生成代码
/arch:SSE2
/clr:启用C++的托管扩展并产生在公共语言运行库上运行的输出文件
/F:设置堆栈大小|此选项设置程序堆栈大小(以字节为单位)。
如果不使用此选项,堆栈大小默认为1MB
乌鞘岭隧道/F100
/Fe:重命名可执行文件
/
<
/G7:针对Pentium4或Athlon优化代码。
/GA:优化Windows应用程序的代码
/GL:启用全程序优化
/Gm:启用最小重新生成
/HELP:列出编译器选项
/I:在目录中搜索包含文件|指定源文件目录include
/I"e:\VC\include"
/link:将指定的选项传递给LINK
/MD:使用MSVCRT.lib创建多线程DLL
/ML:使用LIBC.lib创建单线程可执行文件
/
MT:使用LIBCMT.lib创建多线程可执行文件
/O1:创建小代码
/O2:创建快速代码
/Os:代码大小优先
/W:设置警告等级
/W3
------------------------------
/Ot:代码速度优先
/LD:创建动态链接库
/Ox:使用最大优化
/Zs:只检查语法
-
-----------------------------
/TC:指定C源文件
方仓医院/TP:指定C++源文件
-----------------------------------------------------------------------------------------
file:一个或多个源文件、.obj文件或库的名称。CL编译源文件并将.obj文件和库的名称传递给链接器。有关更多信息,请参见CL文件名语法。
lib:一个或多个库名。CL将这些名称传递给链接器。
command-file:包含多个选项和文件名的文件。有关更多信息,请参见CL命令文件。
link-opt:一个或多个链接器选项。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在编译完成之后会自动调用link,命令行中带上/EHsc是为了打开"C++例外(Exceptions)",以免出现编译器警告;微软的编译器从Visual Studio.NET2002开始,默认设置了一个编译选项/GS,其作用是堆栈检查,以
防止堆栈或缓冲区溢出此类问题的发生,即是阻止代码溢出攻击,所以必须链接bufferoverflowU.lib库。其详细情况如下:
·bufferoverflowU.lib:此函数库具体实现安全性cookie验证功能,此功能可以在用户模式中使用,也可以在使用Win32API的应用程序中使用。大多数应用程序将链接到这个函数库。
·bufferoverflowK.lib:此函数库具体实现在操作系统内核模式中执行的安全性cookie 检查。在内核模式中运行的服务与子系统应该链接到这个库。
·bufferoverflow.lib:此函数库具体实现可以在用户模式中使用的安全性cookie验证功能。不过它与bufferoverflowU.lib有所不同,它可以在不使用Win32API的服务与应用程序中使用。
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
LINK是将通用对象文件格式(COFF)对象文件和库链接起来以创建32位可执行(.exe)文件或动态链接
库(DLL)的32位工具。
LINK用法如下:
/ALIGN指定每一节的对齐方式
/ALIGN选项指定程序线性地址空间中每一节的对齐方式。number参数以字节为单位,并且必须是2的幂。默认值是4K(4096)。如果对齐方式产生
无效的图像,则链接器发出警告。除非正
在编写诸如设备驱动程序的应用程序,否则应不需要修改对齐方式。
/DLL生成DLL
/DRIVER创建Windows NT核心模式驱动程序
/EXETYPE生成虚拟设备驱动程序
/EXETYPE:DYNAMIC创建动态加载的虚拟设备驱动程序。
/EXETYPE:DEV386创建静态加载的虚拟设备驱动程序。这是/EXETYPE的默认值
/INCREMENTAL控制增量链接
/LARGEADDRESSAWARE通知编译器应用程序支持大于2GB的地址
/LIBPATH允许用户重写环境库路径
/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创建纯资源DLL
创建纯资源DLL时要求/NOENTRY选项。
/OPT控制LINK优化
如果生成仅运行于Windows NT或Windows2000上的组件,则应使用/OPT:NOWIN98。/SUBSYSTEM:指定子系统
{CONSOLE|EFI_APPLICATION|EFI_BOOT_SERVICE_DRIVER|
温泉浴片EFI_ROM|EFI_RUNTIME_DRIVER|NATIVE|POSIX|WINDOWS|
WINDOWSCE}[,#[.##]]
/OUT指定输出文件名
/
精典用法:
link*.s/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 od
bc32.lib odbccp32.lib OpenGL32.Lib
rc是资源编译
/l列出资源用的区域性
0x804中国
0x409美国
用法:
<中的常用参数
==============================================================
<是Masm和VC/VS中通用的。
其中Masm中的版本最低,我现在用的是5.12.8078
由于其版本原因,部分参数不支持。请用Link/?对照。
==============================================================
/ALIGN(节对齐)
上海船舶研究设计院/ALIGN[:number]
其中:number(对齐值)。
/ALIGN选项指定程序线性地址空间中每一节的对齐方式。number参数以字节为单位,并且必须是2的幂。默认值是4K(4096)。如果对齐方式产生无效的图像,则链接器发出警告。
除非正在编写诸如设备驱动程序的应用程序,否则应不需要修改对齐方式。
可以用/SECTION选项的对齐参数修改特定节的对齐方式。
生物多样性
指定的对齐值不能小于最大的节对齐。
==============================================================
/BASE(基址)
/BASE:{address[,size]|@filename,key}
/BASE选项设置程序的基址,重写.exe文件(在0x400000处)或DLL(在
0x10000000处)的默认位置。操作系统首先尝试在程序的指定或默认基址加载程序。如果该基址处没有足够的空间可用,则系统将重定位程序。若要防止重定位,请使用/FIXED选项。
如果address不是64K的倍数,链接器将发出错误。您可以选择指定程序的大小,以便链接器在程序超过您指定的大小时发出警告。
==============================================================
/DEBUG(生成调试信息)
/DEBUG选项创建.exe文件或DLL的调试信息。
链接器将调试信息放在程序数据库(PDB)中。它在后面的程序生成期间更新PDB。
为调试创建的.exe文件或DLL包含相应PDB的名称和路径。调试器在您调试程序时读取嵌入的名称并使用PDB。链接器使用程序的基名称和扩展名.pdb命名程序数据库,并嵌入它的创建路径。若要重写该默认值,请设置/PDB并指定不同的文件名。
编译器的仅限行号(/Zd)或C7兼容(/Z7)选项使编译器将调试信息保留在.obj文件中。还可以使用程序数据库(/Zi)编译器选项将调试信息存储在.obj文件的PDB中。链接器首先在写入.obj文件的绝对路径中查对象的PDB,然后在包含.obj文件的目录中查。不能指定对象的PDB文件名或链接器的位置。
指定/DEBUG时暗含/INCREMENTAL。
/DEBUG将/OPT选项的默认值从REF更改为NOREF以及从ICF更改为NOICF (因此,需要显式指定/OPT:REF或/OPT:ICF)。
==============================================================
/DEF(指定模块定义文件)
/DEF:filename(要传递到链接器的模块定义文件(.def)的名称。)
备注
/DEF选项将模块定义文件(.def)传递到链接器。只有一个.def文件可以指定给LINK。有关.def文件的详细信息,请参见模块定义文件。
==============================================================
/DEFAULTLIB(指定默认库)
多媒体网络教学/DEFAULTLIB:library
library解析外部引用时搜索的库名。
备注
/DEFAULTLIB选项将一个library添加到LINK在解析引用时搜索的库列表。用
/DEFAULTLIB指定的库在命令行上指定的库之后和.obj文件中指定的默认库之前被搜索。
忽略所有默认库(/NODEFAULTLIB)选项重写/DEFAULTLIB:library。如果在两者中指定了相同的library名称,忽略库(/NODEFAULTLIB:library)选项将重写
/DEFAULTLIB:library。

本文发布于:2023-06-27 15:50:13,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/137464.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:选项   指定   文件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图