天天看點

CentOS 6.6 更新GCC v7.5.0 (完整)

0.為什麼是GCC7.5

CentOS7 自帶的 gcc/g++ 版本是 4.8,如果沒有安裝,可以通過 yum 指令安裝。

由于 gcc/g++ 4.8 完全支援 C++ 11,支援部分 C++ 14,不支援 C++ 17,而完全支援 C++ 17 的是 g++ 7 及以上版本:

個人不太建議安裝GCC8.X,太新的編譯器,所需要的依賴包、各種環境都需要最新版本,安裝過程中會出現很多問題。而且還不一定那麼穩定。

本着夠用就好的原則,GCC7.5完全支援C++17,是最理想的選擇。

1.下載下傳源碼,解壓

 經測試,這個 https://ftp.gnu.org/ 位址還是很快的,而且是完整的,不想有些地方下載下傳的是有缺檔案的!!!!

wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz
tar -zxf gcc-7.5.0.tar.xz      

2.下載下傳依賴

我們可以直接用自帶的腳本完成

cd gcc-7.5.0
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib      

3.編譯安裝

 編譯比較耗時,我用了七八十分鐘;雙核cpu, 是以 make 參數 `-j2` :

mkdir gcc-build-7.5.0
cd gcc-build-7.5.0
make -j2 && make install && date      

4.更新動态庫

這個,我編譯安裝後,好像 不用更新,添加PATH路徑 /usr/local/lib64 就可以了。

[root@wsvr cmake-build]# ll /usr/local/lib64/libstdc++.so*
lrwxrwxrwx 1 root root       19 12月 17 13:10 /usr/local/lib64/libstdc++.so -> libstdc++.so.6.0.24
lrwxrwxrwx 1 root root       19 12月 17 13:10 /usr/local/lib64/libstdc++.so.6 -> libstdc++.so.6.0.24
-rwxr-xr-x 1 root root 11587712 12月 17 13:10 /usr/local/lib64/libstdc++.so.6.0.24
-rw-r--r-- 1 root root     2397 12月 17 13:10 /usr/local/lib64/libstdc++.so.6.0.24-gdb.py
[root@wsvr cmake-build]# ll /usr/lib64/libstdc++.so*
lrwxrwxrwx 1 root root     19 12月 16 19:36 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x 1 root root 995840 9月  30 10:17 /usr/lib64/libstdc++.so.6.0.19      

如果程式運作報錯,檢查動态庫:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC      

 從輸出可以看出,gcc的動态庫還是舊版本的。說明出現這些問題,是因為更新gcc時,生成的動态庫沒有替換老版本gcc的動态庫。

 執行以下指令,查找編譯gcc時生成的最新動态庫:(在root權限下進行操作,後面都是,不再贅述)

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

複制庫到 /usr/lib64

cp /usr/local/lib64/libstdc++.so.6.0.24 /usr/lib64      

删掉舊的libstdc++.so.6(這是一個軟連結),建立新的libstdc++.so.6軟連結

rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/local/lib64/libstdc++.so.6.0.24   /usr/lib64/libstdc++.so.6      

5.更多參考

https://www.cnblogs.com/lzpong/p/5755678.html

https://www.cnblogs.com/FengGeBlog/p/12994103.html

https://www.cnblogs.com/music-liang/p/12900457.html

--- auth:lzpong