linux系統下的缺失 libstdc++.so.6: version’GLIBCXX_3.4.20’的問題:


在linux下遇到了一個這樣的問題,使用anaconda時,它的安裝庫里的文件被提示:缺失 libstdc++.so.6: version’GLIBCXX_3.4.20’。后來經過查看資料知道了原來是由於 libstdc++.so.6的版本過低造成的;再重新找一個高版本的就可以了;由於GCC的版本其實很高的,所以呢,我認為我的電腦的其它文件的庫文件里應該有比這版本高的;所以,在自己的電腦里找找;

問題解決:

1. 先觀察anaconda 文件夾下的庫里面的libstdc++.so.6是什么?

yinheyi@yinheyi-Aspire-V5-471G:~/anaconda1/lib$ ls -l | grep libstdc++.so.6
lrwxrwxrwx  1 yinheyi yinheyi       19 7月  27 15:48 libstdc++.so -> libstdc++.so.6.0.19
lrwxrwxrwx  1 yinheyi yinheyi       19 7月  27 23:12 libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x  2 yinheyi yinheyi  1055192 9月  19  2015 libstdc++.so.6.0.19

看出:libstdc++.so.6是一個軟鏈接,它鏈接到了實際的動態庫文件:libstdc++.so.6.0.19;

 

2.再來看看libstdc++.so.6.0.19里有什么樣的版本的GLIBCXX?運行如下命令得到:

yinheyi@yinheyi-Aspire-V5-471G:~/anaconda1/lib$ strings libstdc++.so | grep GLIBCXX

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

里面確實沒有version’GLIBCXX_3.4.20’,所以呢,需要找一個新的啊;

 

3.找一個更高版本的libstdc++.so.6:  使用locate命令來查查本地有沒有:

yinheyi@yinheyi-Aspire-V5-471G:~/anaconda1/lib$ locate libstdc++.so.6
/home/yinheyi/anaconda1/lib/libstdc++.so.6
/home/yinheyi/anaconda1/lib/libstdc++.so.6.0.19
/home/yinheyi/anaconda1/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
/home/yinheyi/anaconda1/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6.0.19
/usr/lib/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20-gdb.py

在文件夾 /usr/lib/x86_64-linux-gnu/里確實有一個: libstdc++.so.6.0.20。 查看它里面的GLIBCXX,發現正是我們需要的:

yinheyi@yinheyi-Aspire-V5-471G:~/anaconda1/lib$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_DEBUG_MESSAGE_LENGTH

 

4. 最后實施:

首先把libstdc++.so.6.0.20 復制到 anaconda 的庫文件夾下,然后刪除原來的軟鏈接 libstdc++.so.6,建立新的指向libstdc++.so.6.0.20的軟鏈接;

原來的libstdc++.so.6,如下:

lrwxrwxrwx  1 yinheyi yinheyi       19 7月  27 23:12 libstdc++.so.6 -> libstdc++.so.6.0.19

假設已經刪除掉了原來的libstdc++.so.6,現在建立新的指向libstdc++.so.6.0.20的軟鏈接:

ln -s libstdc++.so.6.0.20 libstdc++.so.6

再來看看現在的新的libstdc++.so.6,如下:

lrwxrwxrwx  1 yinheyi yinheyi       19 7月  27 24:12 libstdc++.so.6 -> libstdc++.so.6.0.20

 

解決;


免責聲明!

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



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