• 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的链接地址指向系统路径中的地址即可:

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

    再次运行:

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

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

  • 相关阅读:
    学习FPGA的几个阶段
    Quartus 编译问题Info (176311): Pin ~ALTERA_nCEO~ is assigned to pin location Pin_P28 (IOPAD_X115_Y43_N7)
    No Title
    最近比较忙
    如何在Qsys 中定制Nand_Flash软核(学习)
    Nand_Flash工作原理(学习)2
    (转)FPGA时序约束的几种方法
    ‘Downloading ELF Process failed’问题如何解决
    celery使用的时候的坑
    Git命令一览
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/16760151.html
Copyright © 2020-2023  润新知