命令行下编译链接C/C++(WINDOWS )

在dos下利用cl命令编译cpp时,容易出现问题。下面介绍解决方案:
1.在“我的电脑--属性--高级--环境变量”中,添加如下变量:
              INCLUDE
  D:\ProgramFiles\MicrosoftVisualStudio\VC98\Include
  LIB
  D:\ProgramFiles\MicrosoftVisualStudio\VC98\Lib
  X:\ProgramFiles\MicrosoftVisualStudio\Common\MSDev98\Bin;X:\ProgramFiles\MicrosoftVisualStudio\VC98\Bin
  X表示安装盘符,注意这里是两个路径,因为cl.exe要用到MSDev98\Bin目录下的MSPDB60.DLL。
              如果已经存在这些变量,则把以上值分别加在对应的变量值的后面,注意在添加前用分号隔开。
              2.重启电脑
              3.打开命令提示符,输入:
              clhello.c
  回车后就会在目录下生成hello.exe和hello.obj。
            再来一个更具代表性的例子
1.分别建三个源文件
#include<Stdio.h>
            externvoidfunction1(),function2();
            intmain(void)
            {
            function1();
            function2();
            getch();
            return0;
            }

voidfunction1()
            {
            printf("function1");
            }

voidfunction2()
            {
            printf("function2");
            }

2.编译文件
            运行cmd
            clprog.c换行
clprog1.c换行
clprog2.c换行

3.链接文件
linkprog.obj,prog1.obj,prog2.obj

双击prog.exe,最后的输出结果:function1function2

CL.exe是控制MicrosoftC和C++编译器与链接器的32位工具。编译器产生通用对象文件格式(COFF)对象(.obj)文件。链接器产生可执行文件(.exe)或动态链接库文件(DLL)。
            注意,所有编译器选项都区分大小写。

若要编译但不链接,请使用/c。
            使用NMAKE生成输出文件。
            使用BSCMAKE支持类浏览。
            以下是一个完整的编译器选项分类列表。

优化

选项作用
/O1创建小代码
/O2创建快速代码
/Oa假设没有别名
/Ob控制内联展开
/Od禁用优化
/Og使用全局优化
/Oi生成内部函数
/Op改善浮点数一致性
/Os代码大小优先
/Ot代码速度优先
/Ow假定在函数调用中使用别名
/Ox使用最大优化(/Ob1gity/Gs)
            /Oy省略框架指针

代码生成

选项作用
/clr启用C++的托管扩展并产生在公共语言运行库上运行的输出文件
/EH指定异常处理模型
/G3优化代码以优选386处理器。在VisualC++5.0中已经停用,编译器将忽略此选项
/G4优化代码以优选486处理器。在VisualC++5.0中已经停用,编译器将忽略此选项
/G5优化代码以优选Pentium
            /GB与/G6等效;将_M_IX86的值设置为600
            /Gd使用__cdecl调用约定
/Ge激活堆栈探测
/GF
            /GF启用字符串池
/GH调用挂钩函数_penter
            /GH调用挂钩函数_pexit
            /GL启用全程序优化
/Gm启用最小重新生成
/Gr启用运行时类型信息(RTTI)
            /Gr使用__fastcall调用约定
/GS控制堆栈探测
/GT支持使用静态线程本地存储区分配的数据的纤程安全
/GX启用同步异常处理
/Gy启用函数级链接
/GZ使用__stdcall调用约定
/MD使用MSVCRT.lib创建多线程DLL
            /MDd使用MSVCRTD.lib创建调试多线程DLL
            /ML使用LIBC.lib创建单线程可执行文件
/MLd使用LIBCD.lib创建调试单线程可执行文件
/MT使用LIBCMT.lib创建多线程可执行文件
/MTd使用LIBCMTD.lib创建调试多线程可执行文件

输出文件

选项作用
/FA
            /FA创建列表文件
            设置列表文件名
/Fd重命名程序数据库文件
/Fe重命名可执行文件
/Fm创建映射文件
/Fo创建对象文件
/Fp指定预编译头文件名
/FR
            /FR生成浏览器文件
/Fx将插入的代码与源文件合并

调试

选项作用
/GS缓冲区安全检查
/GZ与/RTC1相同
/RTC启用运行时错误检查
/Wp64检测64位可移植性问题
/Yd将完整的调试信息放在所有对象文件中
/Yl创建调试库时插入PCH引用
/Z7生成与C7.0兼容的调试信息
/Zd生成行号
/Zi生成完整的调试信息

预处理器

选项作用
/AI指定在解析传递到#using指令的文件引用时搜索的目录
/c在预处理期间保留注释
/D定义常数和宏
/E将预处理器输出复制到标准输出
/EP将预处理器输出复制到标准输出
/Fl预处理指定的包含文件
/FU强制使用文件名,就像它已被传递到#using指令一样
/I在目录中搜索包含文件
/P将预处理器输出写入文件
/U移除预定义宏
/U移除所有的预定义宏
/X忽略标准包含目录
/ZI将调试信息包含在与“编辑并继续”兼容的程序数据库中

语言

选项作用
/noBool取消C++bool、true和false关键字
/vd取消或启用隐藏的vtordisp类成员
/vmb对指向成员的指针使用最佳的基
/vmg对指向成员的指针使用完全一般性
/vmm声明多重继承
/vms声明单一继承
/vmv声明虚拟继承
/Za禁用语言扩展
/Zc在/Ze下指定标准行为
/Ze启用语言扩展
/Zg生成函数原型
/Zl从.obj文件中移除默认库名
/Zpn封装结构成员
/Zs只检查语法

链接

选项作用
/F设置堆栈大小
/LD创建动态链接库
/LDd创建调试动态链接库
/link将指定的选项传递给LINK
            /MD使用MSVCRT.lib编译以创建多线程DLL
            /MDd使用MSVCRTD.lib编译以创建调试多线程DLL
            /ML使用LIBC.lib编译以创建单线程可执行文件
/MLd使用LIBCD.lib编译以创建调试单线程可执行文件
/MT使用LIBCMT.lib编译以创建多线程可执行文件
/MTd使用LIBCMTD.lib编译以创建调试多线程可执行文件

预编译头

选项作用
/Y-忽略当前生成中的所有其他预编译头编译器选项
/Yc创建预编译头文件
/Yd将完整的调试信息放在所有对象文件中
/Yu在生成期间使用预编译头文件
/YX自动处理预编译头

杂项

选项作用
@指定响应文件
/?列出编译器选项
/c编译但不链接
/H限制外部(公共)名称的长度
/HELP列出编译器选项
/J更改默认的char类型
/NOLOGO取消显示登录版权标志
/QI0f确保Pentium0F指令没有问题
/QIfdivFDIV、FPREM、FPTAN和FPATAN指令有缺陷的IntelPentium微处理器的变通方法
QIfist当需要从浮点类型转换为整型时取消Helper函数_ftol的调用
/showIncludes在编译期间显示所有包含文件的列表
/Tc
            /Tc指定C源文件
/Tp
            /Tp指定C++源文件
/V设置版本字符串
/w设置警告等级
/w禁用所有警告
/Wall启用所有警告,包括默认情况下禁用的警告
/WL在从命令行编译C++源代码时启用错误信息和警告消息的单行诊断
/Zm设置编译器的内存分配限制
CL命令行使用下列语法:

CL[option...]file...[option|file]...[lib...][@command-file][/linklink-opt...]

下表说明CL命令的输入项意义

option一个或多个CL选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个正斜杠(/)或一个短划线(–)指定的。如果某个选项带有参数,则该选项的说明指定在选项和参数之间是否允许有空格。选项名(/HELP选项除外)区分大小写。有关更多信息,请参阅CL选项的顺序。

file一个或多个源文件、.obj文件或库的名称。CL编译源文件并将.obj文件和库的名称传递给链接器。有关更多信息,请参阅CL文件名语法。

lib一个或多个库名。CL将这些名称传递给链接器。

command-file包含多个选项和文件名的文件。有关更多信息,请参阅CL命令文件。

link-opt一个或多个链接器选项。CL将这些选项传递给链接器。

您可以指定任意数目的选项、文件名和库名,条件是命令行上的字符数不超过1024,该限制是操作系统指定的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值