MS CL & LINK的命令行用法

CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF)
对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。
注意,所有编译器选项都区分大小写。
用法如下:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
option : 一个或多个 CL 选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个
正斜杠 (/) 或一个短划线 (-) 指定的。如果某个选项带有参数,则该选项的说明指
定在选项和参数之间是否允许有空格。选项名(/HELP 选项除外)区分大小写。有关
更多信息,请参见 CL 选项的顺序。
/c : 编译但不链接
/Zs : 检查语法
/? : 列出编译器选项
/arch : 使用 SSE 或 SSE2 指令生成代码
/arch:SSE2
/clr : 启用 C++ 的托管扩展并产生在公共语言运行库上运行的输出文件
/F : 设置堆栈大小 | 此选项设置程序堆栈大小(以字节为单位)。
如果不使用此选项,堆栈大小默认为 1 MB
/F 100
/Fe : 重命名可执行文件
/Feexe.exe
/G7 :针对 Pentium 4 或 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"
---------------------------------------------------------------------------------------------
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 通知编译器应用程序支持大于 2 GB 的地址
/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 或 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
---------------------------------------------------------------------------------------------
MFC 开发如下:
编译源代码:
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
+++++++++++++++++++++++++++++++++++++++++++++++
MS CL 编译器选项语法
Promote>cl -helpMicrosoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
                C/C++ COMPILER OPTIONS
                    -OPTIMIZATION-
/O1 minimize space                         /Op[-] improve floating-pt consistency/O2 maximize speed                         /Os favor code space/Oa assume no aliasing                       /Ot favor code speed/ Ob inline expansion (default n=0)     /Ow assume cross-function aliasing/Od disable optimizations (default)         /Ox maximum opts. (/Ogityb1 /Gs)/Og enable global optimization             /Oy[-] enable frame pointer omission/Oi enable intrinsic functions
                  -CODE GENERATION-
/G3 optimize for 80386                     /Gy separate functions for linker/G4 optimize for 80486                     /Ge force stack checking for all funcs/G5 optimize for Pentium                   /Gs[num] disable stack checking calls/G6 optimize for Pentium Pro               /Gh enable hook function call/GB optimize for blended model (default)   /GR[-] enable C++ RTTI/Gd __cdecl calling convention             /GX[-] enable C++ EH (same as /EHsc)/Gr __fastcall calling convention           /Gi[-] enable incremental compilation/Gz __stdcall calling convention             /Gm[-] enable minimal rebuild/GA optimize for Windows Application     /EHs enable synchronous C++ EH/GD optimize for Windows DLL           /EHa enable asynchronous C++ EH/Gf enable string pooling                     /EHc extern "C" defaults to nothrow/GF enable read-only string pooling         /QIfdiv[-] enable Pentium FDIV fix/GZ enable runtime debug checks           /QI0f[-] enable Pentium 0x0f fix
                    -OUTPUT FILES-
/Fa[file] name assembly listing file         /Fo name object file/FA[sc] configure assembly listing         /Fp name precompiled header file/Fd[file] name .PDB file                   /Fr[file] name source browser file/Fe name executable file             /FR[file] name extended .SBR file(press to continue)/Fm[file] name map file
                    -PREPROCESSOR-
/C don't strip comments                     /FI name forced include file/D {=|#} define macro       /U remove predefined macro/E preprocess to stdout                     /u remove all predefined macros/EP preprocess to stdout, no #line         /I

add to include search path/P preprocess to file                         /X ignore "standard places"
                    -LANGUAGE-
/Zi enable debugging information         /Zl omit default library name in .OBJ/ZI enable Edit and Continue debug info /Zg generate function prototypes/Z7 enable old-style debug info           /Zs syntax check only/Zd line number debugging info only     /vd{0|1} disable/enable vtordisp/Zp[n] pack structs on n-byte boundary   /vm type of pointers to members/Za disable extensions (implies /Op)     /noBool disable "bool" keyword/Ze enable extensions (default)
                    -MISCELLANEOUS-
/?, /help print this help message           /V set version string/c compile only, no link                   /w disable all warnings/H max external name length     /W set warning level (default n=1)/J default char type is unsigned           /WX treat warnings as errors/nologo suppress copyright message     /Yc[file] create .PCH file/Tc compile file as .c       /Yd put debug info in every .OBJ/Tp compile file as .cpp   /Yu[file] use .PCH file/TC compile all files as .c                 /YX[file] automatic .PCH/TP compile all files as .cpp             /Zm max memory alloc (% of default)
                      -LINKING-
(press to continue)/MD link with MSVCRT.LIB           /MDd link with MSVCRTD.LIB debug lib/ML link with LIBC.LIB                 /MLd link with LIBCD.LIB debug lib/MT link with LIBCMT.LIB             /MTd link with LIBCMTD.LIB debug lib/LD Create .DLL                         /F set stack size/LDd Create .DLL debug libary         /link [linker options and libraries]
Promote >
++++++++++++++++++++++++++++++++++++++++++++++++
利用vc 6.0目录下的cl.exe直接编译程序的方法
1.在“我的电脑--属性--高级--环境变量”中, 添加如下变量:
INCLUDE
D:/Program Files/Microsoft Visual Studio/VC98/Include
LIB
D:/Program Files/Microsoft Visual Studio/VC98/Lib
PATH
X:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;X:/Program Files/Microsoft Visual Studio/VC98/Bin
X表示安装盘符,注意这里是两个路径,因为cl.exe要用到MSDev98/Bin目录下的MSPDB60.DLL。
如果已经存在这些变量,则把以上值分别加在对应的变量值的后面,注意在添加前用分号隔开。
2.重启电脑
3.打开命令提示符,输入:
cl hello.c
回车后就会在目录下生成hello.exe和hello.obj。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值