【C++】C++運行環境的搭建

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

Windows7 搭建運行環境

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 下搭建運行環境

筆者的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不會。

1.安裝GNU c/c++編譯器

檢查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

 2.驗證

在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

3.在Linux系統上編譯和運行C/C++項目

 接下來筆者寫些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

 

 

參考文檔:

How To Compile And Run a C/C++ Code In Linux

C++ compiler support

What is the difference between g++ and gcc?

相關文章
相關標籤/搜索