解决ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘问题

报错信息:

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/anaconda3/envs/molopt/lib/python3.7/site-packages/rdkit/rdBase.so)

分析原因:

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21'下没有GLIBCXX_3.4.21这个版本,简而言之就是/lib64/libstdc++.so.6下的glibc版本太低了。

使用这条命令查看一下动态库中有哪些版本的glibc

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

输出:可以发现,动态库中没有我们要的GLIBCXX_3.4.21。

解决ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘问题_第1张图片

解决方案:移花接木

由于anaconda中已经有了新版本glibc,所以复制anaconda中的glibc到/usr/lib64/中。

1.查找annaconda的glibc所在位置

该命令会检索所有的libstdc++

find / -name "libstdc++.so*"

在这里你可以找到你anaconda环境下所用到的listdc++.so.6.0.29,保存这个路径。

 2.将该文件拷贝到/usr/lib64/目录下

但是这一步需要管理员权限,加个sudo

sudo cp /root/annaconda3/envs/molopt/lib/libstdc++.so.6.0.29 /usr/lib64/

3.重新设置软链接,使listdc++.so.6.0.29指向listdc++.so.6

ln -sf /lib64/libstdc++.so.6.0.29 /lib64/libstdc++.so.6

注意此处在 -s后面加了 f ,表示强制链接,否则可能会报这个错误。

 然后再使用这条命令看一下,就显示了所需要的版本信息。

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

解决ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘问题_第2张图片

 OK!!!

你可能感兴趣的:(BUG,linux,python,运维)