Bootstrap

【Python】 ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

【问题描述】

这里有一台Linux机器,我在这上面安装了Anaconda和TensorFlow,结果就在导入TensorFlow测试的时候发生了如下的问题:

>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/__init__.py", line 22, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/__init__.py", line 52, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/core/framework/graph_pb2.py", line 6, in <module>
    from google.protobuf import descriptor as _descriptor
  File "/root/anaconda3/lib/python3.6/site-packages/google/protobuf/descriptor.py", line 48, in <module>
    from google.protobuf.pyext import _message
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/anaconda3/lib/python3.6/site-packages/google/protobuf/pyext/_message.cpython-36m-x86_64-linux-gnu.so)

然后我就像大多数人一样去网上搜这个错误,但是搜到的内容千篇一律,并没有解决我的问题,可能他们的解决办法并不适用于我的这个场景,好在他们的做法给了我一定的启发,遂列出我的解决办法,以供大家参考,当然我的这个解决办法也不一定适用于其他人的场景。

【解决办法】

1、首先我查看了下/lib64/libstdc++.so.6这个文件中关于GLIBCXX的信息:

strings /lib64/libstdc++.so.6 | grep GLIBCXX

很显然,确实没有GLIBCXX_3.4.21。

2、搜索anaconda中的libstdc++.so.6相关的信息

果然有,咱们替换一下这个文件不就行了吗,于是便有了下面的操作。

3、拷贝文件到lib64目录,并重新设置软链接

cp /root/anaconda3/lib/libstdc++.so.6.0.26 /lib64/
rm -rf /lib64/libstdc++.so.6
ln -s /lib64/libstdc++.so.6.0.26 /lib64/libstdc++.so.6

4、再次测试一下

OK~错误被完美解决。你们在此过程中遇到了哪些问题,欢迎留言,让我看看你们都遇到了哪些问题~

;