我的系统是ubuntu 14.04。

在测试HRNet(CVPR2019)的分类任务时遇到的问题:

解决libstdc++.so.6: version GLIBCXX_3.4.21 not defined in libstdc++.so.6 with link time reference

参考了几篇博客。排查问题顺序如下:

《1》首先查看/usr/lib/libstdc++.so.6目录下,是否存在对应的GLIBCXX_3.4.21。

查看命令:strings /usr/lib/libstdc++.so.6 | grep GLIBC

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_3.4.21
GLIBCXX_3.4.22
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.18
GLIBC_2.3.4
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

如果是该结果,证明GLIBCXX_3.4.21存在。这种情况运行python命令还出错,则跳《2》/《3》。

但是,如果查不到,可能是新版本的libstdc++没有链接到libstdc++6.0中,可以参考下面的博客:

https://blog.csdn.net/zhenyuhe/article/details/86737328  

《2》可能是protobuf版本的问题,我的服务器当前protobuf是3.6.1版本的,手动降成3.6.0版本。

命令:pip install protobuf==3.6.0。

再执行图片中的python运行命令时就没有上述错误了。

《3》之后又在另一个目录,不同文件夹下遇到类似的问题,用上述方法,没解决掉。

于是在/usr/lib/目录下执行下面命令:

find  libstdc++*,

发现该目录下面的x86-64-linux-gnu目录下居然还有高版本的libstdc++,于是到该目录下,手动删除,再次链接到libstdc++.so.6下,命令如下:

ln -s libstdc++.s0.6.0.21 libstdc++.so.6 。

虽然不是很明白其中的原理,但是问题解决了,还是希望有懂的可爱人儿能够留言告诉我一下。

这是本人解决这个问题的过程,希望对遇到同样问题的你有帮助 !!!

相关文章: