檢查動态庫,發現沒有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_