《C++ Primer第五版》读书笔记(5)--解决运行时错误version `GLIBCXX_3.4.15' not found

今天在编译完一个小程序,运行时报错:

[david@localhost programmer]$ prog1

prog1: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15‘ not found (required by prog1)

[david@localhost programmer]$ strings /usr/lib64/libstdc++.so.6|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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH


最高到了3.4.13,没有3.4.15版.

我是自己从源代码编译的gcc 4.8.2,应该是sudo make install没有抓到这个包.

在网上搜了搜,参考这篇文章:http://stackoverflow.com/questions/5216399/usr-lib-libstdc-so-6-version-glibcxx-3-4-15-not-found,把问题解决了:

1.在当时make的目录下找到如下文件:

gcc-build-4.8.2/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18,


strings libstdc++.so.6.0.18| strings /usr/lib64/libstdc++.so.6|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


包括了.15,应该可以!

把该文件拷贝到了/usr/lib64下.

然后将libstdc++.so.6指向libstdc++.so.6.0.18:

[root@localhost lib64]# rm -r libstdc++.so.6
rm: remove symbolic link `libstdc++.so.6‘? y
[root@localhost lib64]# ln -s libstdc++.so.6.0.18 libstdc++.so.6

再次运行程序就好使了!


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。