天天看點

安裝GLIBCXX_3.4.21和GLIBC_2.18

檢查動态庫,發現沒有GLIBCXX_3.4.21:

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

檢視libstdc++.so.6的位置:

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

列出與libstdc++.so.6相關的檔案,可以看到目前動态連接配接庫版本是libstdc++.so.6.0.19:

/usr/lib64/libstdc++.so.6.0.19

/usr/lib64/libstdc++.so.6

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc

/data/result/SegParser/libstdc++.so.6

/data/download_record/SegParser/libstdc++.so.6

/data/segdsegy/SegParser/libstdc++.so.6

進入/usr/lib64目錄檢視軟連結情況:

cd /usr/lib64      
ls -l libstdc++.so*      

顯示結果:

lrwxrwxrwx 1 root root 19 Mar 18 11:39 libstdc++.so.6 -> libstdc++.so.6.0.19

-rwxr-xr-x 1 root root 991616 Oct 30 14:39 libstdc++.so.6.0.19

軟連結就連結到了libstdc++.so.6.0.19這個版本上。鑒于系統内不存在更高版本的libstdc++.so.6的庫,遂計劃更新GCC版本。更新GCC版本。

是以需要在centos上面安裝比較新的gcc,直接安裝:

yum install centos-release-scl      
yum install devtoolset-7-gcc*      

啟動:

scl enable devtoolset-7 bash      

檢視版本:

gcc --version      

gcc版本已變成最新版,檢視動态庫是否已正常:

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

然而發現并沒有,查找編譯gcc時生成的最新動态庫:

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

執行結果如下:

/usr/local/lib64/libstdc++.so.6.0.25

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

/usr/local/lib64/libstdc++.so.6.0.25-gdb.py

/usr/local/lib64/libstdc++.so.6

/usr/lib64/libstdc++.so.6.0.19

/usr/lib64/libstdc++.so.6

/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so

/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc

/opt/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.25

/opt/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so

/opt/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6

/opt/gcc-8.3.0/build/stage1-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.25

/opt/gcc-8.3.0/build/stage1-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so

/opt/gcc-8.3.0/build/stage1-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6

/opt/gcc-8.3.0/build/prev-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.25

/opt/gcc-8.3.0/build/prev-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so

/opt/gcc-8.3.0/build/prev-x86_64-pc-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6

/data/result/SegParser/libstdc++.so.6

/data/download_record/SegParser/libstdc++.so.6

/data/segdsegy/SegParser/libstdc++.so.6

可以看到在路徑/usr/local/lib64/libstdc++.so.6.0.25下有一個新的高版本的庫,于是将此庫複制到/usr/lib64/路徑下并重建立立軟連接配接:

cp /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64/
rm libstdc++.so.6
ln -s libstdc++.so.6.0.25 libstdc++.so.6      

完成之後通過指令可以看到GLIBCXX_3.4.21已經存在。

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

參考文章​​https://www.jianshu.com/p/cedbdf0b6bca​​來發現問題詳細解決辦法

​來進行安裝新的gcc

安裝GLIBC_2.18

strings /lib64/libc.so.6 | grep GLIBC_