在本篇文章中,筆者會談談如何搭建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
參考文檔: