【问题标题】:tensorflow ImportError: /home/user/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not foundtensorflow ImportError:/home/user/anaconda3/bin/../lib/libstdc++.so.6:未找到版本“GLIBCXX_3.4.20”
【发布时间】:2017-08-27 15:51:17
【问题描述】:

尝试在 Ubuntu 16.04 LTS 上的 anaconda3 环境中从源代码构建 tensorflow,构建成功,但是当我尝试时:

import tensorflow as tf

它给了我错误:

ImportError: /home/user/anaconda3/bin/../lib/libstdc++.so.6: 版本 找不到“GLIBCXX_3.4.20”

我已经查看并认为它可能是libgcc 是旧的,所以我尝试了conda install libgcc,它确实安装了一个列出GLIBCXX_3.4.20 的新库;然而,anaconda 似乎将它安装到虚拟环境中,但 tensorflow 正在anaconda3/lib 文件夹中寻找它,我该如何解决这个问题?是否有一个简单的修复方法,无需重新安装 anaconda 并从源代码重建(这需要很长时间)?

(tensorflow) user@user-VirtualBox:~$ strings /home/user/anaconda3/bin/../lib/libstdc++.so.6 | grep GLIBCXX
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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

conda install libgcc 将新的libgcc 安装到虚拟环境文件夹中:

(tensorflow) user@user-VirtualBox:~$ strings /home/user/anaconda3/envs/tensorflow/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_DEBUG_MESSAGE_LENGTH
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

您可能已经注意到,/home/user/anaconda3/envs/tensorflow/lib/libstdc++.so.6 确实列出了 GLIBCXX_3.4.20,但 /home/user/anaconda3/bin/../lib/libstdc++.so.6 没有。

【问题讨论】:

    标签: ubuntu tensorflow anaconda


    【解决方案1】:

    我暂时解决了this answer之后的问题,这是我做的:

    1) 激活虚拟环境:

    source activate virtual-env-name
    

    2) 安装较新版本的libstdc++.so.6,在我的情况下libgcc 版本是5+anaconda3

    conda install libgcc
    

    3) 转到anaconda3/lib 文件夹:

    cd ~/anaconda3/lib
    

    4) 备份libstdc++.so.6:

    mv -vf libstdc++.so.6 libstdc++.so.6.old
    

    5)这里链接虚拟环境库中新安装的libstdc++.so.6virtual-env-name是虚拟环境名称:

    ln -s ~/anaconda3/envs/virtual-env-name/lib/libstdc++.so.6 ./libstdc++.so.6
    

    希望这对遇到同样问题的其他人有所帮助。

    【讨论】:

    • 在运行命令之前,我会尝试使用export LD_PRELOAD=/opt/anaconda3/lib/libstdc++.so.6.0.25,而不是修改链接
    猜你喜欢
    • 2017-11-30
    • 2019-05-04
    • 2015-06-05
    • 2018-07-05
    • 2022-10-08
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多