如何在 Centos7 中安裝 gcc


系統環境:Centos7.4

今天在安裝 Nodejs8.7 的時候,報了一個警告:

WARNING: C++ Compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)

然后,查了一下自己系統上安裝的版本:4.8.5

好吧,不能用 yum 升級了,那就手動安裝了吧

 

 

一、選擇需要升級的版本

gcc ftp 下載地址列表

(我選擇了5.4.0)

 

二、獲取安裝包並解壓

cd /usr/local/src
wget https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
tar -jxvf gcc-5.4.0.tar.bz2

注:bz2是一種壓縮文件格式,若無法解壓,安裝 bzip2 即可:yum -y install bzip2

 

三、進入解壓后的gcc文件夾,下載供編譯需求的依賴項

cd gcc-build-5.4.0
./contrib/download_prerequisites

 

四、建立一個文件夾存放編譯文件

mkdir gcc-build-5.4.0
cd gcc-build-5.4.0

 

五、生成 Makefile 文件

make

注:這個過程非常耗時,我的1核1G內存大約花了一個來小時

 

六、安裝

sudo make install

 

七、重啟服務器,驗證版本

gcc -v

 

 

等了那么久,總算是成功了,很激動對不對?

但是!

我執行到上邊以后,屁顛屁顛的跑去編譯 nodejs 了,耍出了一個錯誤:

/usr/local/src/node-v8.7.0/out/Release/mksnapshot: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/src/node-v8.7.0/out/Release/mksnapshot)

編譯失敗~ 勞資等了30分鍾

 

好吧,出了問題終究是要解決的

問題原因:升級gcc時,生成的動態庫沒有替換老版本 gcc 動態庫導致的

解決方案:將gcc最新版本的動態庫替換系統中老版本的動態庫。

 

(1). 查找編譯gcc時生成的最新動態庫

find / -name "libstdc++.so*"

 

(2) 將找到的動態庫libstdc++.so.6.0.21復制到/usr/lib64

cp /usr/local/src/gcc-5.4.0/gcc-build-5.4.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64

 

(3). 切換工作目錄至/usr/lib64,刪除原來的軟連接, 將默認庫的軟連接指向最新動態庫。

cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6

 

到這里才算是收工了。

 

 

 參考鏈接:

IT筆錄

 


免責聲明!

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



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