Ubuntu系统anaconda报错version `GLIBCXX_3.4.30' not found

参考文章:

https://blog.csdn.net/zhu_charles/article/details/75914060

 

 

================================================

 

 

 

在anaconda中安装deepmind_lab模块,安装过程并没有报错,运行代码时报错:

 

 

具体错误信息:

/home/devil/anaconda3/envs/impala/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-13.so.1)

 

根据错误信息可以知道运行时调用C++标准库报错,显示的被调用的C++标准库地址为:

/home/devil/anaconda3/envs/impala/lib/libstdc++.so.6

也就是说在anaconda创建的python环境中默认调用的库地址首先是自身环境的lib路径,那么我们可以看看在当前系统中一共有多少个C++标准库libstdc++.so.6文件:

sudo find / -name libstdc++.so.6

 

 

可以看到系统中C++标准库libstdc++.so.6文件有多个,基本是每个独立性较高的程序都在自己的环境路径下有个libstdc++.so.6文件,所以这样是因为不同的libstdc++.so.6文件可能内部的GLIBCXX版本并不相同,因此一些不需要从源码编译的软件就会采用这种方式,把符合自身版本需要的libstdc++.so.6文件放在自身的库路径下,这样在调用的时候会优先调用自身带有的libstdc++.so.6文件而不是系统自带的。

 

我们可以看下系统libstdc++.so.6文件中支持的GLIBCXX版本

strings  /usr/lib/x86_64-linux-gnu/libstdc++.so.6   | grep GLIBC

 

 

我们再看下anaconda环境下libstdc++.so.6文件中支持的GLIBCXX版本:

strings /home/devil/anaconda3/envs/impala/lib/libstdc++.so.6  | grep GLIBC

 

 

可以看到系统环境下 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 文件含有GLIBCXX_3.4.30版本,而anaconda环境下/usr/lib/x86_64-linux-gnu/libstdc++.so.6文件含有的最高版本为GLIBCXX_3.4.29,因此有了前面的报错。

 

查看anaconda环境下libstdc++.so.6的相关文件:

 

 

 

 

 

系统库路径下,libstdc++.so.6的相关文件:

 

 

 

 

可以看到我们只需要将anaconda环境中libstdc++.so和libstdc++.so.6的链接地址指向系统路径中的地址即可:

 

 

 

 

 

===================================================

 

 

再次运行:

 

 

 

不再报错,已经修复成功。

 

 

=============================================

 

posted on 2022-10-07 17:31  Angry_Panda  阅读(5173)  评论(0编辑  收藏  举报

导航