在本篇文章中,笔者会谈谈如何搭建C++的运行环境。在不一样操做系统中,运行C++编译器的命令也各不相同,最经常使用的编译器是GNU编译器(Linux系统)和微软Visual Studio编译器(Windows系统)。linux
注意C++是没有版本的说法的,只有编译C++的编译器才有版本这一说。C++经常使用的标准的是“C++11”和"C++98",其中“C++11”是目前最新的标准。若是是Linux系统,GCC的版本至少都应该是4.7才能支持c++11标准,并且4.7还未彻底支持C++11标准的全部特性,只支持了C++11标准的部分特性,传送门。可是Windows系统中的至少是Visual Studio 2015才支持"C++11"标准。ios
C++与C#不一样,Windows中不少类库都是由C#写的,几乎全部的Windows操做系统默认都已经安装了.NET Framework了,能够直接使用C#的环境。但C++不一样,须要先下载微软的Visual Studio,安装过程一路Next。这里笔者就不介绍如何使用它的图形界面了,本文介绍经过命令行工具来编译C++程序。c++
笔者的Visua Studio目录为:C:\Program Files (x86)\Microsoft Visual Studio 11.0git
配置环境变量:github
添加VS_HOME
C:\Program Files (x86)\Microsoft Visual Studio 11.0curl
添加LIB
%VS_HOME%\vc\lib工具
添加INCLUDE
%VS_HOME%\vc\include测试
Path环境变量追加:
%VS_HOME%\vc\bin
接下来测试一下:cl /?
而后编写一个Hello.cpp文件,内容以下:ui
//引入iostream #include <iostream> int main(){ //提示用户输入 std::cout << "Enter two numbers:" << std::endl; int v1 = 0, v2 = 0; //接收两个数字,中间以空格隔开 std::cin >> v1 >> v2; //输出两个数的和 std::cout << "The sum of num " << v1 << " and " << v2 << " is " << (v1+v2) << std::endl; return 0; }
运行cl /EHsc Hello.cpp,会获得Hello.exe文件。其中/EHsc表示启用C++的异常处理,与/GX[-]相同。url
读者可能会遇到以下错误:
1.出现vc编译,丢失mspdb110.DLL解决
这是由于%VS_HOME%\VC\bin\下没有mspdb110.dll“这个文件,直接从%VS_HOME%\Common7\IDE\下复制这个文件到%VS_HOME%\VC\bin\下便可解决。
2.没法打开文件“kernel32.lib”或缺乏 “uuid.lib”
这是%VS_HOME%\VC\lib下没有这两个文件,在不一样的计算机中这两个文件的位置也不必定是固定的。读者能够在C盘下搜索Kernal32.lib和uuid.lib,而后将它们拷贝到%VS_HOME%\VC\lib目录下。
笔者的Linux是:CentOS-7.4-x64版本。
在上面咱们介绍了如何在Windows下搭建和运行C++程序,在接下来的章节中,笔者将会探讨如何在Linux下搭建C++语言环境。
在开始搭建环境以前,须要先了解GCC的概念。GCC的全称是GNU Compiler Collection(GNU编译器集合),经过GNU编译器可以编译不一样类型的语言。
gcc:GNU C Compiler
g++:GNU C++ Compiler
gcc编译.c或.cpp结尾的文件,可是gcc是分开编译C和C++的。g++也能够编译.c或.cpp文件,但这些文件都被做为C++进行编译。
也就是说,g++编译文件的时候,默认是会引入标准库(std)文件的,可是gcc不会。
检查gcc和g++是否安装
gcc --version
g++ --version
若是未安装,能够按照以下的提示进行一步步进行安装。
若是是Centos6系统:
# yum groupinstall 'Development Tools'
CentOs7系统,可能会找不到“Development Tools”包,能够用以下的命令:
# yum -y install gcc-c++
若是是Debian 或 Ubuntu 系统
$ sudo apt-get update
$ sudo apt-get install build-essential manpages-dev
在Linux系统中,输入以下命令会显示GCC的安装位置和版本信息
$ whereis gcc
$ which gcc
$ gcc --version
若是是要使用C++11的特性,那么应该将GCC的版本升级到4.7以上,建议5.4的版本。
下面笔者介绍如何在CentOS7下,将GCC4.8升级到GCC5.4版本,能够参考以下脚本
echo "Downloading gcc source files..."
curl https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 -O
echo "extracting files..."
tar xvfj gcc-5.4.0.tar.bz2
echo "Installing dependencies..."
yum install gmp-devel mpfr-devel libmpc-devel -y
echo "Configure and install..."
mkdir gcc-5.4.0-build
cd gcc-5.4.0-build
../gcc-5.4.0/configure --enable-languages=c,c++ --disable-multilib
make -j$(nproc) && make install
参考地址为:https://gist.github.com/jdhao/e3fd77d51f3a95684d2b3354fc61b2ab
接下来笔者写些C和C++的案例文件,而且在Linux系统编译和运行起来。
demo.c
#include<stdio.h> /* demo.c: My first C program on a Linux */ int main(void) { printf("Hello! This is a test prgoram.\n"); return 0; }
编译命令能够用cc、gcc、make:
cc demo.c -o demo
或
gcc demo.c -o demo
或
make demo
注意:在使用make编译的时候,不用指定源文件,只须要制定源文件去掉后缀后的新的文件,就能够了。例如上面的demo.c,只要使用make demo, make就会根据规则,将demo.c编译为demo。
执行上面三个命令的任何一个,均可以生成一个名为demo的可运行文件。
而后使用
./demo
就能够运行了。
效果图:
接下来咱们来编译和运行一下C++程序。
仍是以上面的Hello.cpp(这里再也不重复贴出代码,就是第一节中“Windows7 搭建运行环境”下的案例)为例,咱们能够以下编译
g++ Hello.cpp -o Hello
或者
make Hello
注意这里不能使用 gcc Hello.cpp -o Hello 来编译(若是使用该命令编译,那么报出“找不到标准库”的错误),由于gcc命令默认是编译C语言文件的,未引入标准库。
而后运行就能够了
./Hello
若是使用了g++11的特性的话,那么应该指明使用g++11标准进行编译:
g++ Hello.cpp -o Hello -std=c++11
若是make使用的时候,出现target is up to date错误信息,那么能够加上-B 选项,例如:
make -B Hello
参考文档: