命令行调用编译器

一直用java来写程序,java配置好jre路径之后,在cmd下编译运行,很方便。

刚好要给一个舍友改下C程序,想到可不可以像java一样在环境变量里配置好C的编译路径呢?

于是上网搜了一下,得到如下结果:

一、如果装有VC,那就简单了,因为VC带有C的编译器,可以将此路径设置进环境变量。

Windows系统下编译连接源代码方法:
cl -GX test.c
-GX: 启动同步异常处理
上面的命令会产生可执行程序:test.exe
在命令行中直接输入:test.exe 就可运行该程序

Tips:
一、cmd中键入cl提示不认识cl命令,则由于无法找到cl.exe程序。解决方法如下:
添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加
C:/Program Files/Microsoft Visual Studio 9.0/VC/bin;。
注意:
1、结尾最后用“;”隔开!
2、如果你的Microsoft Visual Studio 低于9.0版本或高于9.0版需要修改上面的路径名称。

二、cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况,是因为VC/Bin/下没有 “msobj80.dll,
mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,解决的方法:
1>直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决
2>添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加 C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;,注意结尾最后用“;”隔开!
这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。

三、如果你在编译过程中,出现一下错误:
1、fatal error C1034: stdio.h: no include path set
2、fatal error LNK1104: cannot open file “kernel32.lib
请在我的电脑->属性->高级->环境变量->系统变量中新建系统变量LIB、INCLUDE并设置它们的值为:
(LIB)C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib;C:/Program Files/Microsoft SDKs/Windows/v5.0/Lib;C:/Program Files/Microsoft Visual Studio 9.0/VC/lib
(INCLUDE)C:/Program Files/Microsoft Visual Studio 9.0/VC/include

Linux系统下编译连接源代码的方法:
gcc -g -c test.c -o test 只生成目标文件(.obj文件),没有生成可执行文件(也就是说test是.obj文件)
gcc -g test.c -o test 生成可执行文件(可以通过./test运行程序)
-g:生成调试信息。GNU 调试器可利用该信息。
-c:只编译并生成目标文件。(没有中间文件生成和可执行文件,如列表文件、可执行文件)
-o:设置生成的可执行程序的名字为test
上面的命令会产生可执行程序:test
在Terminal中输入:./test 就可以运行该程序了。

操作步骤如下:

1.在命令行下,先运行vcvars32.bat(此文件在VC安装目录/Bin文件夹里,其中设置了环境变量和路径等信息)。或者,手动修改环境变量:

path=你安装VS的路径/VC98/Bin

lib=你安装VS的路径/VC98/lib;你安装VS的路径/VC98/MFC/lib

include=你安装VS的路径/VC98/include;你安装VS的路径/VC98/MFC/include;你安装VS的路径/VC98/ATL/lib

2.然后直接用CL编译器编译C++程序(如:CL /GX /MT zx.cpp)。

CL经常使用的选项为:

多线程dll(/MD)-动态链接,不包含运行时库文件

多线程(/MT)-静态链接,包含运行时库文件

附:CL 参数,即编译选项如下:

-优化-

/O1 最小化空间 /Op[-] 改善浮点数一致性
/O2 最大化速度 /Os 优选代码空间
/Oa 假设没有别名 /Ot 优选代码速度
/Ob 内联展开(默认 n=0) /Ow 假设交叉函数别名
/Od 禁用优化(默认值) /Ox 最大化选项。(/Ogityb2 /Gs)
/Og 启用全局优化 /Oy[-] 启用框架指针省略
/Oi 启用内部函数

-代码生成-

/G3 为 80386 进行优化 /Gh 启用 _penter 函数调用
/G4 为 80486 进行优化 /GH 启用 _pexit 函数调用
/G5 为 Pentium 进行优化 /GR[-] 启用 C++ RTTI
/G6 对 PPro、P-II、P-III 进行优化 /GX[-] 启用 C++ EH (与 /EHsc 相同)
/G7 对 Pentium 4 或 Athlon 进行优化 /EHs 启用 C++ EH (没有 SEH 异常)
/GB 为混合模型进行优化(默认) /EHa 启用 C++ EH(w/ SEH 异常)
/Gd __cdecl 调用约定 /EHc extern “C” 默认为 nothrow
/Gr __fastcall 调用约定 /GT 生成纤维安全 TLS 访问
/Gz __stdcall 调用约定 /Gm[-] 启用最小重新生成
/GA 为 Windows 应用程序进行优化 /GL[-] 启用链接时代码生成
/Gf 启用字符串池 /QIfdiv[-] 启用 Pentium FDIV 修复
/GF 启用只读字符串池 /QI0f[-] 启用 Pentium 0x0f 修复
/Gy 分隔链接器函数 /QIfist[-] 使用 FIST 而不是 ftol()
/GZ 启用堆栈检查(/RTCs) /RTC1 启用快速检查(/RTCsu)
/Ge 对所有函数强制堆栈检查 /RTCc 转换为较小的类型检查
/Gs[num] 控制堆栈检查调用 /RTCs 堆栈帧运行时检查
/GS 启用安全检查 /RTCu 未初始化的本地用法检查
/clr[:noAssembly] 为公共语言运行库编译
noAssembly - 不产生程序集
/arch:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值