日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
CentOS/Linux 下升級(jí)GCC與G++

在學(xué)習(xí)或者編寫C/C++程序的時(shí)候,可能由于編譯器的版本較低,導(dǎo)致一些新增的知識(shí)點(diǎn)在加入到程序編譯時(shí),會(huì)出現(xiàn)一些問(wèn)題,例如編譯完成之后生成可執(zhí)行文件,但你在執(zhí)行可執(zhí)行文件的時(shí)候,系統(tǒng)會(huì)報(bào)這樣的錯(cuò)誤:

在高陽(yáng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,高陽(yáng)網(wǎng)站建設(shè)費(fèi)用合理。

[root@localhost ~]# ./a.out 
./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./a.out)

這個(gè)原因是你升級(jí)了gcc的版本之后卻沒有用生成的動(dòng)態(tài)庫(kù)替換老版本的動(dòng)態(tài)庫(kù), 這樣在程序編譯運(yùn)行的時(shí)候偶爾就會(huì)遇到上面所述的問(wèn)題,這個(gè)問(wèn)題我們放到后面再進(jìn)行解訣,下面就開始介紹gcc/g++編譯器的升級(jí)過(guò)程:

首先升級(jí)gcc和g++是沒有便捷方式的,例如像yum update ....  yum install  這些命令都是沒用的,或者添加yum的repo文件也是不行的,所以我們只能手動(dòng)編譯安裝了,下面就開始我們的安裝過(guò)程。

1、獲取安裝包并解壓
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2

tar -jxvf gcc-6.1.0.tar.bz2當(dāng)然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本可供下載,最新的版本已經(jīng)更新到7.1.0,但是我們并不需要最新版本,下面就用6.1.0版本來(lái)操作,其他的版本都可類似操作。

2、下載供編譯需求的依賴項(xiàng)
這個(gè)神奇的腳本文件會(huì)幫我們下載、配置、安裝依賴庫(kù),可以節(jié)約我們大量的時(shí)間和精力。
cd gcc-6.1.0

./contrib/download_prerequisites
運(yùn)行這個(gè)腳本要在聯(lián)網(wǎng)狀態(tài)下完成,因?yàn)橐螺d配置,安裝依賴庫(kù),這也需要時(shí)間,網(wǎng)絡(luò)不好的時(shí)候會(huì)是一個(gè)較慢長(zhǎng)的等待時(shí)間。

3、建立一個(gè)目錄供編譯出的文件存放
mkdir gcc-build-6.1.0

cd gcc-build-6.1.0

4、生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

5、編譯
make -j4

-j4選項(xiàng)是make對(duì)多核處理器的優(yōu)化,如果不成功請(qǐng)使用make
(注意:此步驟非常耗時(shí),我虛擬機(jī)耗時(shí)近3小時(shí); 實(shí)體機(jī)近80分鐘,CPU基本是滿的,內(nèi)存也使用不少)

6、安裝
make install(安裝需要root權(quán)限)
查看安裝
ls /usr/local/bin | grep gcc

7、重啟然后查看gcc版本
gcc -v

8、這之后你就可以寫個(gè)C++11的程序段進(jìn)行測(cè)試
代碼在此處省略。。。。。。
g++ -std=c++0x -o demoCpp11 demoCpp11.cpp
通過(guò)上面的步驟就可以完成對(duì)g++和gcc的升級(jí)

下面我們來(lái)解決開頭提到的問(wèn)題:
源碼編譯升級(jí)安裝了gcc后,編譯程序或運(yùn)行其它程序時(shí),有時(shí)會(huì)出現(xiàn)類似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' 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ù)即可解決。

(1). 運(yùn)行以下命令檢查動(dòng)態(tài)庫(kù):
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
從輸出可以看出,gcc的動(dòng)態(tài)庫(kù)還是舊版本的。說(shuō)明出現(xiàn)這些問(wèn)題,是因?yàn)樯?jí)gcc時(shí),生成的動(dòng)態(tài)庫(kù)沒有替換老版本gcc的動(dòng)態(tài)庫(kù)。

(2). 執(zhí)行以下命令,查找編譯gcc時(shí)生成的最新動(dòng)態(tài)庫(kù):
find / -name "libstdc++.so*"
將上面的最新動(dòng)態(tài)庫(kù)libstdc++.so.6.0.22復(fù)制到/usr/lib64目錄下
cd /usr/lib64
cp /root/Downloads/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22  ./

(3). 刪除原來(lái)軟連接:
rm -rf libstdc++.so.6

(4). 將默認(rèn)庫(kù)的軟連接指向最新動(dòng)態(tài)庫(kù):
ln -s libstdc++.so.6.0.22 libstdc++.so.6

(5). 默認(rèn)動(dòng)態(tài)庫(kù)升級(jí)完成。重新運(yùn)行以下命令檢查動(dòng)態(tài)庫(kù):
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 輸出有"GLIBCXX_3.4.14" 了


分享文章:CentOS/Linux 下升級(jí)GCC與G++
文章起源:http://www.dlmjj.cn/article/djjhdeo.html