如何用命令行编译c++程序
作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话。虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在。从客观的角度来讲,一方面,这种技能帮你在同事或同学面前体现在自己的编程方面的“骨灰级”地位。另一方面,这种脱离了IDE的编译过程在你刷题的时候能帮你摆脱很多IDE上的恼人事故。
实际上,网上一找,确实有不少这个方面的文章,不过好多都是基于32位的win7或者win8的系统的,很不巧的是,本人的电脑是64位的win10系统。在经历了很多次失后才终于将代码编译跑通。真是一把辛酸泪啊。下面就介绍下如何在64位win10系统中用cmd+notepad进行编译c++程序。
1)设置环境变量:我们知道,一般的C/C++程序开发经历三个过程:源代码的编辑——编译生成.obj文件——链接生成.exe文件。那么在这个过程中起到关键作用的就是编译器了,也就是我们要找到c++的编译器。如果你已经安装好visual studio的话,那就直接在文件中找就行。如果没有安装相应的安装包,那么我也会介绍另一种方法。先说已经安装VS的情况:找到文件的安装目录底下,如E:\各种软件的安装目录\VS2015,具体要看你自己的软件安装目录。而且基本上所有的VS版本,目录的名称都是几乎一致的,所以不用担心安装的版本路径名称会不一致的问题。如果找到的话,你应该能看到:
找到VC这个文件夹,当然你还能看到VB,VC#等,这些文件夹里包含了相关的语言环境包等,不用管,直接找到VC里的bin文件夹,然后将路径E:\各种软件的安装目录\VS2015\VC\bin加到系统的环境变量中去。至于环境变量怎么弄的话,找到我的电脑,右键属性,然后找到高级系统设置->环境变量->系统变量->Path,新建一个,然后把路径添加进行就行。
这样做的目的,其实就是要让系统知道编译器在哪里,因为环境变量就是操作系统执行命令时的默认检索路径。有了这个环境变量的话,我们的电脑就能在指定的文件夹里找相应的文件。例如要寻找a.exe,就直接在命令行中输入a.exe就行,不用再将绝对路径的全部写进去。
如果你没有安装VS,那么你起码要有VC,如果你说你啥都没安装怎么办,那。。。。。那你还当啥程序员啊。。。。。。反正就是默认已经安装了VC的情况下,找到路径,如D:\Program Files\Microsoft Visual Studio\VC98\Bin,显然这也是我们需要的编译器的路径。编译程序除了需要编译器外,还需要提供系统库文件.lib,系统头文件。对应的路径在VC98文件夹中有相应的Lib和Include文件夹。下面也是要进行环境变量的设置,为了防止出问题,我们还需要找到VC98同级路径下的Common文件夹里的MSDev98\Bin,找找看有没有mspdb60.dll文件,如果有的话就直接将其路径,如D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin和我们的D:\Program Files\Microsoft Visual Studio\VC98\Bin路径两个都加入到环境变量中。接着我们写一个批处理文件来导入相应的变量。写一个文本如下
INCLUDE = D:\Program Files\Microsoft Visual Studio\VC98\Include
LIB = D:\Program Files\Microsoft Visual Studio\VC98\Lib
保存为Path.bat,然后运行就行。
通过上面的设置,我们在环境变量中加入了编译器的路径,为了测试下是否成功,可以在开始->cmd中输入cl,看看是否有类似的窗口显示
有的话就说明成功了。
2)编程程序调试
虽然环境变量设置不太一样,但是上面两种情况的结果是大致一样的,因此下面按着第一种情况,也就是有VS的编译器的配置的时候来进行测试。
打开notepad,写上代码如下:
#include <iostream> using namespace std; int main()
{
cout<<"Hellow World"<<endl;
while (1){}
return 0;
}
在任意的一个盘里,如F盘保存为test.cpp。然后打开cmd,输入 vcvars32.bat。接着要转到我们的代码的保存路径下,如F:,这时直接这输入F:
显示如下:
然后输入cl /EHsc test.cpp会出现如下:
哈哈,看到/out:test.exe了有木有。直接打开我们的F盘根文件夹,看看有没有exe文件!运行下:
是不是很有成就感!
有几点可以稍微注意下:1、只有2009以后的版本,在命令行编译时才需要先执行“vcvars32.bat”,之前的版本就不需要了。
2、Visual Studio 2012以前的命令行编译参数一般用cl -GX xxx.cpp,2012以后建议用cl -EHsc xxx.cpp
如何用命令行编译c++程序的更多相关文章
- win10 uwp 使用 msbuild 命令行编译 UWP 程序
原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...
- 使用命令行编译Qt程序
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- 【Qt】命令行编译Qt程序(nmake)【转】
简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ...
- 命令行编译C++程序
使用命令行来编译C++程序,我们可以有两种方法: 方法一: 1. 依次打开开始程序->Visual Studio 2010 –>Visual Studio tool ...
- java 命令行 编译 运行程序
学习java使用IDE前最好先用用命令行的javac.java来跑一跑简单的程序,这样能够熟悉一下包管理对.class文件路径的影响. 我们先写一段简单的代码: package com.csdn.lk ...
- 怎样用命令行编译C#程序
1. 把程序拷贝至记事本 2.另存为*cs格式 3.找到VS2015提供的命令提示 4.要把命令行指向程序所在的目录(可以有个小软件) 如果在其他的盘符,先敲D:,然后再cd 5.输入csc hell ...
- 用cmd命令行编译JAVA程序时出现“找不到或无法加载主类”
今天复习Java基础知识时,使用cmd命令窗口进行编译Java文件发现了如下问题: 网上有很多的解决方法,和问题出现的讨论,以下方法是解决我出现这个问题方式. 解决方式: 重点是圈住的部分. 下面是我 ...
- 命令行编译C程序
1 准备工作 下载mingw-get-setup.exe并且安装 参考 http://www.jb51.net/softjc/159871.html 环境变量更新: PATH .;C:\MinGW\ ...
- 终端命令行编译运行C#程序HelloWorld
终端命令行编译运行C#程序HelloWorld 今天忽然有人问我,刚学习java程序的时候,一般老师都会建议我们从配置环境变量开始从命令行编译运行程序,那么学习c#的时候基本是直接安装visual s ...
随机推荐
- P5325-[模板]Min_25筛
正题 题目链接:https://www.luogu.com.cn/problem/P5325 题目大意 定义一个积性函数满足\(f(p^k)=p^k(p^k-1)\) 求\(\sum_{i=1}^nf ...
- P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
正题 题目链接:https://www.luogu.com.cn/problem/P4451 题目大意 给出\(n\),对于所有满足\(\sum_{i=1}^ma_i=n\)且\(\forall a_ ...
- 【vue】获取异步加载后的数据
异步请求的数据,对它做一些处理,需要怎么做呢?? axios 异步请求数据,得到返回的数据, 赋值给变量 info .如果要对 info 的数据做一些处理后再赋值给 hobby ,直接在 axios ...
- CSS3思维导图
- Dart 中的final 和 const
Dart 常量和常量值 final 和 const 两个关键字用来定义常量,有什么区别呢? final 声明的是运行时常量,const声明的是编译时常量 const 可以声明常量值 举个例子: imp ...
- scheduler源码分析——preempt抢占
前言 之前探讨scheduler的调度流程时,提及过preempt抢占机制,它发生在预选调度失败的时候,当时由于篇幅限制就没有展开细说. 回顾一下抢占流程的主要逻辑在DefaultPreemption ...
- Win10连WiFi显示无internet,安全 却可以正常上网
1.现象: win10连WiFi显示无internet,安全 可以正常上网 2.原因: Wind10升级系统补丁后,更新了系统检查是否联网的注册表配置,新的域名在国内存在无法连接情况.导致此问题发生 ...
- 从commons-beanutils反序列化到shiro无依赖的漏洞利用
目录 0 前言 1 环境 2 commons-beanutils反序列化链 2.1 TemplatesImple调用链 2.2 PriorityQueue调用链 2.3 BeanComparator ...
- 从零入门 Serverless | 一文搞懂函数计算及其工作原理
作者 | 孔德慧(夏莞) 阿里云函数计算开发工程师 什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器.下图是一个应用从开发到上线的对比图: 在传统 Se ...
- maven指令安装jar包到本地仓库
在项目配置过程中,偶尔会遇到jar包下载不来的情况,而同事又有相应的jar包,那么就可以通过maven安装指令直接将jar包安装到自己的本地仓库了. 安装指令: mvn install:install ...