【環境】kos5.8sp2, kernel5.10
還是上一篇提到的那個軟體環境,其依賴的 GLIBCXX 版本較高,因此在安裝時給出了以下錯誤:
xxx: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by xxx)
執行 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX,檢視當前環境中的 GLIBCXX,發現確實沒有
示例:
思路一:
可以先查一下系統中有沒有現成的 libstdc++.so.6.xx (6.0.29 及以上),如果有的話,直接重新將 /usr/lib64/libstdc++.so.6 連結過去。
網上有很多教程步驟,這裡不再贅述。
思路二
如果思路一中並沒有找到合適的 so,那麼建議更新 gcc 的版本。這裡僅僅下載 gcc 高版本是不行的,需要重新編譯。
1)下載新版本 gcc
wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz
tar -zxvf gcc-12.2.0.tar.gz
cd gcc-12.2.0/
2)安裝相關依賴
./contrib/download_prerequisites
輸出類似如下資訊即為成功:
[terark@3afe42f77751 gcc-12.2.0]$ ./contrib/download_prerequisites
gmp-6.2.1.tar.bz2: OK
mpfr-4.1.0.tar.bz2: OK
mpc-1.2.1.tar.gz: OK
isl-0.24.tar.bz2: OK
All prerequisites downloaded successfully.
這裡可能會遇到的問題:
./contrib/download_prerequisites: line 261: bzip2: command not found解決方法:
sudo yum install -y bzip2
3)開始編譯
mkdir build && cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j50
make install
這裡如果編譯不過,看情況,可能需要切換高版本 gcc 環境。
如果需要切換高版本環境,建議直接安裝 gcc-toolset-11/12,然後使用 scl 工具切換。
scl enable gcc-toolset-12 bash
編譯透過後,記得退出 scl 環境:
exit
到這裡,GCC 的安裝就結束了,我們可以透過 gcc -v 檢查版本:
4)更新軟連結
可以檢視 /usr/lib64/libstdc++.so.6 的軟連結
ll /usr/lib64/libstdc++.so.6
找到我們安裝後的 libstdc++.so 位置:
find /usr -name libstdc++.so*
更新連結:
unlink /usr/lib64/libstdc++.so.6
ln -s /usr/local/lib64/libstdc++.so.6.0.30 /usr/lib64/libstdc++.so.6