1. 程式人生 > 程式設計 >Linux配置C++11編譯環境的方法

Linux配置C++11編譯環境的方法

配置yum源

此處我們使用163的yum源,配置如下

首先備份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下載對應版本repo檔案,放入/etc/yum.repos.d/(操作前請做好相應備份),以下為下載連結

https://mirrors.163.com/.help/CentOS6-Base-163.repo

執行以下命令生成yum快取

yum clean all
yum makecache

使用yum配置c++編譯環境

yum配置好之後,配置c++編譯環境命令如下

yum -y install gcc gcc-g++

安裝完成之後c++環境即可配置好。

寫一個hello worl程式碼如下

#include<iostream>

using namespace std;
int main()
{
	cout<<"Hello World!"<<endl;
	return 0;
}

以上程式碼儲存檔名為aa.cpp,用c++編譯並執行的操作如下

g++ -o hello aa.cpp
./aa.cpp

原始碼編譯安裝c++11編譯環境

因為yum自帶的gcc版本過低,並且c++11需要gcc4.8以上版本支援,因此需要下載gcc4.8以上版本以支援c++11

檢視本地gcc版本

gcc -v

本次版本為gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)

獲取gcc4.8.2版本的source code

原始碼預設放在src目錄下

cd /usr/local/src
wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz

檔案有100M,國外網站下載速度很慢,請耐心等待(可用國外vps下載中轉)

下載完成後,放在/usr/local/src下

解壓縮

tar -zxvf gcc-4.8.2.tar.gz

編譯原始碼並安裝

進入gcc目錄

cd gcc-4.8.2

下載配置安裝gcc4.8.2的依賴庫

./contrib/download_prerequisites

建立編譯輸出目錄

在當前路徑下執行即可

mkdir gcc-build-4.8.2

開始configure

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  • --enable-languages表示你要讓你的gcc支援那些語言
  • --disable-multilib不生成編譯為其他平臺可執行程式碼的交叉編譯器
  • --disable-checking生成的編譯器在編譯過程中不做額外檢查

編譯

在編譯輸出目錄gcc-build-4.8.2直接make即可

make

原始碼make過程耗時較長,一般需要半個小時以上。

安裝

make install

驗證是否升級成功

使用which gcc檢查gcc安裝的為止,使用gcc -v檢查版本,如果仍然沒有變,請關閉當前會話重新連線看是否變成4.8.2,如果仍未變,需要重啟系統

驗證C++11程式是否可用

lambda表示式是C++11的新特性,以下程式即可驗證c++11是否可用

參考:http://en.cppreference.com/w/cpp/container/array

#include <iostream>

using namespace std;

int main()

{

  int n = [] (int x,int y) { return x + y; }(5,4);

  cout << n << endl;

}

驗證方法

g++ -std=c++11 -o lambda vv.cpp

如果使用g++不加-std=c++11引數,則會報錯,報錯如下

[root@host-192-168-150-182 tmp]# g++ -o lambda vv.cpp 
vv.cpp: In function ‘int main()':
vv.cpp:9:46: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 [enabled by default]
  int n = [] (int x,4);

更新gcc動態連結庫

原始碼編譯升級安裝了gcc後,編譯程式或執行其它程式時,有時會出現類似/usr/lib64/libstdc++.so.6: versionGLIBCXX_3.4.18' not found的問題。這是因為升級gcc時,生成的動態庫沒有替換老版本gcc的動態庫導致的,將gcc最新版本的動態庫替換系統中老版本的動態庫即可解決。可參考以下連結

http://itbilu.com/linux/management/NymXRUieg.html

到此這篇關於Linux配置C++11編譯環境的文章就介紹到這了,更多相關C++11編譯環境內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!