windows利用DOS窗口编译C++文件
2018-01-22 19:49
711 查看
原文出处:http://blog.csdn.net/chy555chy/article/details/52129501
##############################################################################
参考 http://blog.sina.com.cn/s/blog_7741c2f70101io0s.html
第一次用Markdown编辑器写博客,以前都是用Html编辑器写的。这次尝试一下Markdown,感觉效果不错,格式化代码的方式也很简洁。
由于在Linux上可以使用命令行,通过gcc命令编译C/C++程序。因此就想是否在windows上也可以通过命令行来编译C/C++程序。
网上有说,在windows下安装一个cygwin,然后就可以用gcc命令编译了,可是这样太麻烦了。然后我想VC6.0和Vistual Studio不是也可以编译C/C++文件的吗?虽然它们是图形化界面的方式,可是背后也一定是用命令行方式编译的。
当前环境 Win10 x64 & Vistual Studio 2015
首先,在桌面(我的目录是C:\Users\Administrator\Desktop\test.cpp)上新建一个文本文件,改名为test.cpp。test.cpp的内容如下:
2
3
4
5
6
7
我机子上安装的VS2015,vs2015的VC的bin目录下有个cl.exe就是负责编译C/C++程序的,位置如下:
VC的include目录如下:
VC的lib目录如下:
直接在CMD下键入以下命令
2
3
这些设置仅在该CMD环境下有效,它并不会永久改变系统环境变量,只是临时改变而已。所以并不用太担心。
通过set命令可以查看当前配置的环境变量,如下:
进入test.cpp的目录,并运行 “cl test.cpp” 命令,报错:fatal error C: 无法打开包括文件: “corecrt.h”: No such file or directory
参考这篇博客http://blog.csdn.net/x356982611/article/details/51140807
进入C:\Program Files (x86)\Windows Kits\10\Include目录
我这里是找到其中最新版的点进去,进入到C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt目录,corecrt.h文件如下:
修改环境变量,添加ucrt目录
再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件“uuid.lib”
参考这篇博客http://www.cnblogs.com/CHN-William/archive/2012/12/27/2835578.html,进入到C:\Program
Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib目录,果然发现Uuid.Lib
修改环境变量,添加该目录
再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件 “libucrt.lib”
进入C:\Program Files (x86)\Windows Kits\10\Lib目录
找最新版的文件夹,进入C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64目录,发现“libucrt.lib”文件
这里说明一下,有d后缀的lib文件是Debug版本的,没有的是Release版本的,最明显的区别就是Release版的删除了Debug版本中诸如断点等调试信息,并且进行了代码优化,因此通常Release版本的都会比Debug版本的文件小。
修改环境变量,添加该目录
再次执行 “cl test.cpp” 命令,依然报错:libucrt.lib(exp21.obj) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突
但是扯淡的是为这里就是64位的Win10啊,当初是64位的Win7,用腾讯Win10装机助手升上去的。
修改环境变量,改为x86
执行成功,/out:test.exe test.obj
在输出目录下就生成了相应的 .obj 和 .exe 文件了。
执行test.exe,可以在CMD中看到相应的输出
经过这一次的反复百度,我得出一个经验:网上的博文大多都是Out,而且大家都是复制粘贴还写自己原创,所以一堆一样的资料,而且是不能运行的。所以以后看到网上的资料,一定要亲自试一下,并标注当时的环境才可信。
###########################################################
cl编译时出现的warning:warning c4530:使用了C++异常处理程序,但未启用展开语义
加入参数/EHsc,这样可以缩小捕获范围,从而是没必要的异常的消失。如:cl /EHsc hello.cpp就可以去除warining。
##############################################################################
参考 http://blog.sina.com.cn/s/blog_7741c2f70101io0s.html
第一次用Markdown编辑器写博客,以前都是用Html编辑器写的。这次尝试一下Markdown,感觉效果不错,格式化代码的方式也很简洁。
由于在Linux上可以使用命令行,通过gcc命令编译C/C++程序。因此就想是否在windows上也可以通过命令行来编译C/C++程序。
网上有说,在windows下安装一个cygwin,然后就可以用gcc命令编译了,可是这样太麻烦了。然后我想VC6.0和Vistual Studio不是也可以编译C/C++文件的吗?虽然它们是图形化界面的方式,可是背后也一定是用命令行方式编译的。
当前环境 Win10 x64 & Vistual Studio 2015
首先,在桌面(我的目录是C:\Users\Administrator\Desktop\test.cpp)上新建一个文本文件,改名为test.cpp。test.cpp的内容如下:
#include <iostream> using namespace std; int main() { cout<<"hello world!"<<endl; return 0; }1
2
3
4
5
6
7
我机子上安装的VS2015,vs2015的VC的bin目录下有个cl.exe就是负责编译C/C++程序的,位置如下:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin1
VC的include目录如下:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include1
VC的lib目录如下:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib1
直接在CMD下键入以下命令
set path=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin set include=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib1
2
3
这些设置仅在该CMD环境下有效,它并不会永久改变系统环境变量,只是临时改变而已。所以并不用太担心。
通过set命令可以查看当前配置的环境变量,如下:
进入test.cpp的目录,并运行 “cl test.cpp” 命令,报错:fatal error C: 无法打开包括文件: “corecrt.h”: No such file or directory
参考这篇博客http://blog.csdn.net/x356982611/article/details/51140807
进入C:\Program Files (x86)\Windows Kits\10\Include目录
我这里是找到其中最新版的点进去,进入到C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt目录,corecrt.h文件如下:
修改环境变量,添加ucrt目录
set include=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt1
再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件“uuid.lib”
参考这篇博客http://www.cnblogs.com/CHN-William/archive/2012/12/27/2835578.html,进入到C:\Program
Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib目录,果然发现Uuid.Lib
修改环境变量,添加该目录
set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib1
再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件 “libucrt.lib”
进入C:\Program Files (x86)\Windows Kits\10\Lib目录
找最新版的文件夹,进入C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64目录,发现“libucrt.lib”文件
这里说明一下,有d后缀的lib文件是Debug版本的,没有的是Release版本的,最明显的区别就是Release版的删除了Debug版本中诸如断点等调试信息,并且进行了代码优化,因此通常Release版本的都会比Debug版本的文件小。
修改环境变量,添加该目录
set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x641
再次执行 “cl test.cpp” 命令,依然报错:libucrt.lib(exp21.obj) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突
但是扯淡的是为这里就是64位的Win10啊,当初是64位的Win7,用腾讯Win10装机助手升上去的。
修改环境变量,改为x86
set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x861
执行成功,/out:test.exe test.obj
在输出目录下就生成了相应的 .obj 和 .exe 文件了。
执行test.exe,可以在CMD中看到相应的输出
经过这一次的反复百度,我得出一个经验:网上的博文大多都是Out,而且大家都是复制粘贴还写自己原创,所以一堆一样的资料,而且是不能运行的。所以以后看到网上的资料,一定要亲自试一下,并标注当时的环境才可信。
###########################################################
cl编译时出现的warning:warning c4530:使用了C++异常处理程序,但未启用展开语义
加入参数/EHsc,这样可以缩小捕获范围,从而是没必要的异常的消失。如:cl /EHsc hello.cpp就可以去除warining。
相关文章推荐
- 3_Windows下利用批处理文件_去除C源代码中指示行号的前导数字
- windows下利用文件映射实现共享内存
- 利用securecrt在linux与windows之间传输文件
- 利用WINDOWS命名漏洞等建立的特殊文件或文件夹
- 利用SecureCRT在linux与Windows之间传输文件
- 怎么利用ffmpeg和AviSynth给在windows下面为flv文件加水印
- 利用securecrt在linux与windows之间传输文件
- 利用SAMBA实现Solaris和Windows之间的文件共享
- 利用WINDOWS命名漏洞等建立的特殊文件或文件夹
- windows下利用注册表regedit手动删除文件
- 利用secureCRT在windows和arm开发板之间传输文件的方法
- 解决ubuntu linux打开windows文件的乱码问题 利用LibreOffice转码
- windows利用ssh向ubuntu传文件
- 利用WINDOWS命名漏洞等建立的特殊文件或文件夹
- 怎么利用ffmpeg和AviSynth给在windows下面为flv文件加水印
- linux上利用crontab定时备份postgres数据库及文件到windows系统
- Windows利用文件夹映射来同步文件
- 利用securecrt在linux与windows之间传输文件
- 利用SSH secure Shell实现windows与linux之间传输文件
- Windows下利用jad批量反编译class文件