Centos7安裝百度網盤/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found問題解決方法


問題描述

Centos7.9.2009環境,通過chrome下載百度網盤大文件需要安裝百度網盤客戶端,rpm -ivh baidunetdisk-3.5.0.x86_64.rpm 安裝百度網盤后啟動程序,報錯/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found

排查解決

# 查看GLIBCXX,發現確實沒有GLIBCXX_3.4.20
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
# 查看系統gcc版本
$ gcc -v
#升級libstdc++
#查看提供方yum provides libstdc++.so.6
#安裝yum install libstdc++-4.8.5-44.el7.x86_64 --setopt=protected_multilib=false
#發現升級依然不能解決問題
# 查找庫文件
$ $ find / -name libstdc++.so.6.0.20
# 如果libstdc++.so.6.0.20庫文件已存在,重置軟鏈接即可(直接跳到最后步驟)
# 如果libstdc++.so.6.0.20庫文件不存在,則需要先編譯新版本的GCC,然后再創建軟鏈接

編譯新版本GCC

# 下載gcc可使用國內鏡像源
wget http://mirrors.nju.edu.cn/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
# 解壓文件
$ tar -zxvf gcc-11.2.0.tar.gz
# 進入解壓目錄
$ cd gcc-11.2.0
# 安裝編譯環境,否則下一步編譯安裝的時候可能碰到“configure: error: ***A compiler with support for c++11 language features is required.”
$ yum install -y gcc gcc-c++
# 下載編譯gcc所需的依賴文件和庫
$ ./contrib/download_prerequisites
# 建立輸出目錄,用於存放編譯時所有產生的中間文件
$ mkdir gcc-temp
# 進入輸出目錄
$ cd gcc-temp
# 執行configure配置
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 編譯gcc,指定編譯使用的線程數為8,編譯耗時較長,可能需要幾個小時
$ make -j8
# 這里為了避免影響系統的穩定性,暫時不執行"make install"和替換系統默認版本的gcc

重置軟鏈接

# 進入輸出目錄
$ cd gcc-temp
# 查找編譯生成libstdc++.so庫文件,下面查找到的libstdc++.so、libstdc++.so.6都只是軟鏈接文件,libstdc++.so.6.0.29才是真正編譯生成的庫文件
$ find . -name "libstdc++.so*"
# 拷貝libstdc++.so.6.0.21庫文件到lib64目錄
$ cp ./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.29 /usr/lib64
# 進入lib64目錄
$ cd /usr/lib64
# 刪除舊的鏈接文件
$ rm -f libstdc++.so.6
# 創建新的鏈接文件
$ ln -s libstdc++.so.6.0.21 libstdc++.so.6
# 查看最終的libstdc++.so庫文件列表
$ ls -al /usr/lib64/libstdc++.so.6*

驗證

$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX


免責聲明!

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



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