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


在本篇文章中,筆者會談談如何搭建C++的運行環境。在不同操作系統中,運行C++編譯器的命令也各不相同,最常用的編譯器是GNU編譯器(Linux系統)和微軟Visual Studio編譯器(Windows系統)。

注意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"標准。

Windows7 搭建運行環境

C++與C#不同,Windows中很多類庫都是由C#寫的,幾乎所有的Windows操作系統默認都已經安裝了.NET Framework了,可以直接使用C#的環境。但C++不同,需要先下載微軟的Visual Studio,安裝過程一路Next。這里筆者就不介紹如何使用它的圖形界面了,本文介紹通過命令行工具來編譯C++程序。visual studio有許多版本,但從visual studio 2012才開始部分支持c++11的特性,關於visual studio 各個版本與c++標准支持的對照表,傳送門

筆者的Visua Studio目錄為:C:\Program Files (x86)\Microsoft Visual Studio 11.0

配置環境變量:

添加VS_HOME
C:\Program Files (x86)\Microsoft Visual Studio 11.0

 

添加LIB
%VS_HOME%\vc\lib

 

添加INCLUDE
%VS_HOME%\vc\include

 

Path環境變量追加:
%VS_HOME%\vc\bin

接下來測試一下:cl /?


然后編寫一個Hello.cpp文件,內容如下:

//引入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[-]相同。

 

讀者可能會遇到如下錯誤:

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?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM