Linux配置C++11編譯環(huán)境的方法
配置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
下載對(duì)應(yīng)版本repo文件, 放入/etc/yum.repos.d/(操作前請(qǐng)做好相應(yīng)備份),以下為下載鏈接
https://mirrors.163.com/.help/CentOS6-Base-163.repo
運(yùn)行以下命令生成yum緩存
yum clean all yum makecache
使用yum配置c++編譯環(huán)境
yum配置好之后,配置c++編譯環(huán)境命令如下
yum -y install gcc gcc-g++
安裝完成之后c++環(huán)境即可配置好。
寫一個(gè)hello worl代碼如下
#include<iostream> using namespace std; int main() { cout<<"Hello World!"<<endl; return 0; }
以上代碼保存文件名為aa.cpp,用c++編譯并執(zhí)行的操作如下
g++ -o hello aa.cpp ./aa.cpp
源碼編譯安裝c++11編譯環(huán)境
因?yàn)閥um自帶的gcc版本過(guò)低,并且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
源碼默認(rèn)放在src目錄下
cd /usr/local/src wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz
文件有100M,國(guó)外網(wǎng)站下載速度很慢,請(qǐng)耐心等待(可用國(guó)外vps下載中轉(zhuǎn))
下載完成后,放在/usr/local/src下
解壓縮
tar -zxvf gcc-4.8.2.tar.gz
編譯源碼并安裝
進(jìn)入gcc目錄
cd gcc-4.8.2
下載配置安裝gcc4.8.2的依賴庫(kù)
./contrib/download_prerequisites
建立編譯輸出目錄
在當(dāng)前路徑下執(zhí)行即可
mkdir gcc-build-4.8.2
開始configure
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
--enable-languages
表示你要讓你的gcc支持那些語(yǔ)言--disable-multilib
不生成編譯為其他平臺(tái)可執(zhí)行代碼的交叉編譯器--disable-checking
生成的編譯器在編譯過(guò)程中不做額外檢查
編譯
在編譯輸出目錄gcc-build-4.8.2直接make即可
make
源碼make過(guò)程耗時(shí)較長(zhǎng),一般需要半個(gè)小時(shí)以上。
安裝
make install
驗(yàn)證是否升級(jí)成功
使用which gcc
檢查gcc安裝的為止,使用gcc -v
檢查版本,如果仍然沒有變,請(qǐng)關(guān)閉當(dāng)前會(huì)話重新連接看是否變成4.8.2,如果仍未變,需要重啟系統(tǒng)
驗(yàn)證C++11程序是否可用
lambda表達(dá)式是C++11的新特性,以下程序即可驗(yàn)證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; }
驗(yàn)證方法
g++ -std=c++11 -o lambda vv.cpp
如果使用g++不加-std=c++11
參數(shù),則會(huì)報(bào)錯(cuò),報(bào)錯(cuò)如下
[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, int y) { return x + y; }(5, 4);
更新gcc動(dòng)態(tài)鏈接庫(kù)
源碼編譯升級(jí)安裝了gcc后,編譯程序或運(yùn)行其它程序時(shí),有時(shí)會(huì)出現(xiàn)類似/usr/lib64/libstdc++.so.6: versionGLIBCXX_3.4.18' not found的問(wèn)題。這是因?yàn)樯?jí)gcc時(shí),生成的動(dòng)態(tài)庫(kù)沒有替換老版本gcc的動(dòng)態(tài)庫(kù)導(dǎo)致的,將gcc最新版本的動(dòng)態(tài)庫(kù)替換系統(tǒng)中老版本的動(dòng)態(tài)庫(kù)即可解決??蓞⒖家韵骆溄?/p>
http://itbilu.com/linux/management/NymXRUieg.html
到此這篇關(guān)于Linux配置C++11編譯環(huán)境的文章就介紹到這了,更多相關(guān)C++11編譯環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)的一個(gè)萬(wàn)年歷小程序
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)的一個(gè)萬(wàn)年歷小程序,具有一定的參考價(jià)值,做C語(yǔ)言日期計(jì)算的朋友可以參考下2014-07-07C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例
這篇文章主要介紹了C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法,結(jié)合實(shí)例形式分析了C++排序操作的實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07基于C語(yǔ)言實(shí)現(xiàn)迷宮游戲的示例代碼
這篇文章主要介紹了基于C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的迷宮游戲,對(duì)于學(xué)習(xí)游戲開發(fā)的朋友相信有一定的借鑒價(jià)值,需要的朋友可以參考下2022-05-05C語(yǔ)言中二維數(shù)組指針的簡(jiǎn)要說(shuō)明
這篇文章主要介紹了C語(yǔ)言中二維數(shù)組指針的簡(jiǎn)要說(shuō)明,文章后也附送一個(gè)小練習(xí)題進(jìn)行鞏固,需要的朋友可以參考下2015-08-08C++根據(jù)傳入的函數(shù)指針來(lái)解析需要的參數(shù)(推薦)
C++可以根據(jù)傳入的函數(shù)指針,獲取自己需要的參數(shù)類型,然后根據(jù)參數(shù)源中獲取需要的參數(shù),具體實(shí)現(xiàn)方式大家參考下本文2018-05-05