`
regedit_123
  • 浏览: 321230 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

VC —— 编译器cl.exe

 
阅读更多

cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件。cl.exe命令行参数形式如下:

CL (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...]

各命令行参数的意义如下 :

1、option

命令行中的"option"是指一个或多个编译选项。在指定选项时,需要在选项前加正斜杠(/)或一个短划线(-)。有一些选项还会带有参数,使用":"来指定选项的参数。比如"/sybsystem:windows,5.0"是一个编译选项,表示可执行程序执行所依赖的子系统是Windows(Win32图形用户界面的应用程序),版本最低5.0(即Windows 2000)。选项名区分大小写(/HELP选项除外),而且除了/link选项之外,其他选项是顺序没有要求。在编译时所指定的所有选项都将应用于用户指定的所有源文件。option命令行参数是可选。

2、file

命令行中的"file"是一个或多个所需要编译的源文件,也可以是.obj文件或库文件。cl.exe编译源文件并将.obj文件和库的名称传递给编译器。file参数是编译器的必须参数。

3、lib

该选项用于指定一个或多个库名。cl.exe直接将这些名称传递给链接器。lib是cl.exe的可选参数。

4、command-file

它包含多个选项和文件名的文件,为可选参数。

5、link-opt

一个或多个链接器选项。CL将这些选项传递给链接器,也是可选参数。

举例Hello World:

view plaincopy to clipboardprint?
// File   Name: Hello.c
// Description: First Win32 Application
// by Koma 2009-11-18 22:05

#include <windows.h>
#pragma comment(lib,"user32.lib")

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pszCmdLine, int cmdShow)
{
    MessageBox(NULL,"Hello World !","Test",MB_OK);
    return 0;
}

那么编译该源文件命令行下:

cl /O2 /Fa /Gz /Fo Hello.c

"Hello.c"前面的都是编译选项(即option参数),"Hello.c"是源文件(file参数),没有使用lib、command-file、link-opt等命令行参数。

在命令行编译前,需要设置环境变量

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

(如果被修改过的并不是默认如此,设置完成需要重启电脑)

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———
 

 option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂、也是最常用的。下面介绍一些常用的编译选项:

1、代码生成有关

这些选项将影响编译完成后生成的机器代码:

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———

 

2、调试有关

与调试有关的编译选项如下图,/Z7、/Zi、/ZI这三个选项是对程序进行调试时所必需的选项,同时注意,在生成调试版本的程序时,需要指定/Od选项以禁用优化:

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———
 

3、程序优化有关

与程序优化有关的选项如下图,优化选项将影响编译器对代码的优化,最选择代码体积最小还是选择运行速度最快等需要使用这些选项:

 

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———

 

4、输出文件有关

与生成的输出文件有关的选项如下图,输入文件在参数中需要使用字符串来指定其路径,字符串使用双引号("")括起来,如/Fd "BIN\\"。注意字符串的转意字符,如果需要使用单斜杠表示文件路径,需要使用双杠("\\"):

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———
 

5、预处理器有关

与预处理器有关的选项如下图,这些选项将影响预处理器的运行,比如通过/D选项可以达到与在源代码中使用#define定义基本相同的效果:

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———

 

6、链接有关

与链接有关的选项如下图,编译器可以调试链接器,向链接器传递调用参数。/link选项完成这项功能,还可以指定堆栈的大小,创建动态链接库等:

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———

 

7、预编译有关

与预编译有关的选项如下图,这些编译选项会影响预编译结果:

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———

 

8、语言有关

与语言有关的选项如下图,比如/Za、/Ze选项表示是否支持微软的语言扩展,还是只支持标准 C/C++。/Zp选项可以指定结构中的成员对齐方式,这将影响到生成的程序中结构体的大小。在一些协议头的处理中,/Zp选项非常有用:

VC —— 编译器cl.exe - st251256589 - ———Code_Geass———

 

9、其他选项

这些选项的影响是多方面的,不太好分类。包括显示帮助信息、设置警告等。

分享到:
评论

相关推荐

    VC6_cl.rar_VC6 cl.exe配置

    其中,`cl.exe`是微软C++编译器,它是VC6的重要组成部分,用于将源代码编译成可执行程序。然而,当你从一个压缩包中提取出`cl.exe`单独使用时,它可能无法直接运行,因为系统可能没有正确的环境变量设置。以下将详细...

    vs C++14.0下载工具包以及cl.exe文件不存在解决方法

    通常,`cl.exe`位于`C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\[version]\bin\HostX86\x86`或类似路径下,`c1.exe`位于`C:\Program Files (x86)\Microsoft Visual Studio\2017...

    Python找不到cl.exe等

    cl.exe是MSVC的命令行编译器。如果出现这样的错误,意味着系统无法找到MSVC的编译器。解决这个问题的办法是在系统的环境变量Path中添加包含cl.exe的路径,通常这些路径位于Visual Studio的安装目录下。 另外,系统...

    VC中cl.exe命令参数详解.pdf

    VC 中 cl.exe 命令参数详解 CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。注意,...

    解决vs2105专业版编译cl.exe报错

    在使用Visual Studio 2015 (VS2015)专业版进行开发时,有时会遇到编译器cl.exe报错的问题。这通常是由于多种原因引起的,包括但不限于配置问题、环境变量设置不当、依赖库缺失或者更新冲突。本文将详细讲解如何诊断...

    VC-redist.x86.exe

    "VC-redist.x86.exe" 是一个非常关键的组件,尤其对于Windows用户来说,它关联着Microsoft Visual C++运行时库。这个程序是微软官方发布的,用于在计算机上安装必要的Visual C++运行时环境,使得能够运行依赖于这些...

    Error spawning cl.exe, VC 6.0编译报错出现时解决方案

    ### Error spawning cl.exe, VC 6.0编译报错出现时解决方案 在进行软件开发的过程中,使用Visual C++ 6.0(简称VC 6.0)进行编译时,有时会遇到“Error spawning cl.exe”的错误提示,这不仅会打断开发流程,还会...

    xampp-win32-5.6.30-0-VC11-installer.exe

    xampp-win32-5.6.30-0-VC11-installer.exe xampp-win32-5.6.30-0-VC11-installer.exe

    vc_redist.x86.exe

    vc_redist.x86.exe

    Compiling... ,Error spawning cl.exe错误

    - **CL.exe** 是Visual C++ 6.0的核心编译器组件之一,负责将C/C++源代码转换成目标文件。它位于VC根目录下的`VC98\Bin`文件夹中。 - 当Visual C++ 6.0在编译过程中无法找到CL.exe时,就会报出“Compiling..., Error...

    vc_redist.2015.exe

    标题“vc_redist.2015.exe”指的是微软Visual C++ Redistributable for Visual Studio 2015,这是一个关键的组件,用于在没有安装完整Visual Studio开发环境的计算机上运行依赖于Microsoft Visual C++库的应用程序。...

    VC中cl.exe命令参数详解[借鉴].pdf

    VC 中 cl.exe 命令参数详解 cl.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具,编译器产生通用对象文件格式(COFF)对象(.obj)文件。链接器产生可执行文件(.exe)或动态链接库文件(DLL)。注意,...

    VC6.0编译器介绍.pdf

    《VC6.0编译器详解》 Visual C++ 6.0,简称VC6.0,是一款由Microsoft开发的集成开发环境,主要用于编写Windows平台上的C和C++应用程序。其核心部分是编译器,它负责将程序员编写的源代码转换成可执行程序。本文将...

    C代码贪吃蛇游戏直接复制到VC6.0编译器即可.pdf

    C代码贪吃蛇游戏直接复制到VC6.0编译器即可.pdf

    vc_redist.x64.exe

    vc_redist.x64.exe是微软官方推出的VC++运行库安装包,包含了一些Visual C++的库函数。这些包可用于在计算机上运行此类应用程序,即使没有安装Visual Studio 2015。这些包安装以下库的运行时组件:C运行时 (CRT)、...

    关于c++中这个错误的解决方法Error spawning cl.exe

    “Error Spawning cl.exe”通常出现在尝试编译C++代码时,尤其是在使用Microsoft Visual C++(如VC6.0)等工具进行编译的过程中。这一错误提示意味着编译器无法成功启动或执行`cl.exe`程序。`cl.exe`是Microsoft C/...

    opencv-4.6.0-vc14-vc15.exe

    这个压缩包"opencv-4.6.0-vc14-vc15.exe"很可能是OpenCV的特定版本,兼容Visual Studio 2014 (VC14) 和 Visual Studio 2015 (VC15) 的编译环境。 OpenCV 4.6.0是该库的一个稳定版本,可能包含了自4.0.0版本以来的...

    VC_redist.x64.exe

    总的来说,"VC_redist.x64.exe"是运行使用C++编译器构建的Python扩展模块(如PyTorch)所必需的组件。当遇到导入错误时,及时安装这个组件可以有效解决依赖问题,确保Python环境的正常运行。在深度学习和Python编程...

Global site tag (gtag.js) - Google Analytics