本篇博客轉(zhuǎn)載自:
關(guān)于libstdc++.so.6: version `GLIBCXX_3.4.20’ not found問題解決
1 問題描述
編譯程序或運(yùn)行程序時,出現(xiàn)類似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found的報(bào)錯。
2 問題分析
這是因?yàn)樯塯cc時,生成的動態(tài)庫沒有替換老版本gcc的動態(tài)庫,將gcc最新版本的動態(tài)庫替換掉老版本的動態(tài)庫即可。
3 解決步驟
- 查看GLBCXX版本
>> strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
...
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到,最高版本為3.4.13,沒有對應(yīng)的3.4.21
- 查看libstdc++.so.6鏈接的庫
>> ll /usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13 #這是libstdc++.so.6現(xiàn)在鏈接的庫
- 查看系統(tǒng)更高版本的lib庫
>> find / -name libstdc++.so.6*
/usr/lib64/libstdc++.so.6.bak
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.20
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.20-gdb.py
/usr/local/lib64/libstdc++.so.6.0.20 #這里有一個6.0.20版本,比libstdc++.so.6.0.13版本更高
- 查看lib庫的信息
>> strings /usr/local/lib64/libstdc++.so.6.0.20 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
...
GLIBCXX_3.4.19
GLIBCXX_3.4.20 #這個版本滿足我們的需求
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
- 重新鏈接
>> cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6.0.20
>> rm -f /usr/lib64/libstdc++.so.6
>> ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6