/usr/lib/x86_64-linux-gnu/libstdc++.so.6: 找不到 TensorFlow 需要的版本“GLIBCXX_3.4.21”

Ble*_*zus 4 python debian libstdc++ tensorflow

我正在尝试使用机器学习库在debian服务器上部署一个Flask应用程序,到目前为止,我使用大多数 ML 库进行了管理,但是由于TensorFlow,我对它进行了大量研究,但没有对我有用的解决方案。

PS:我正在为我的应用程序使用 3.7 python venv

导入错误:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本“GLIBCXX_3.4.21”(/flask/wstest/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal 需要) .so) Mar 01 15:32:11 django gunicorn[8803]:无法加载本机 TensorFlow 运行时。

我清楚地错过了GLIBCXX 3.4.21因为strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX节目3.4.20为最新版本。

尝试了这个修复add-apt-repository ppa:ubuntu-toolchain-r/test 给出了这个: 工具链添加尝试的结果

尝试 apt-get 更新,得到这个

W:无法获取http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/dists/jessie/main/binary-amd64/Packages 404 Not Found

还尝试更新 libgcc 和 libstdc++6,说我有最新版本。

编辑:我怀疑 Debian 8 Jessie 不支持比 3.4.20 更高的 glibcxx 版本。

Ram*_*eja 7

这是 Ubuntu 16.04 中此问题的解决方案

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get upgrade libstdc++6
Run Code Online (Sandbox Code Playgroud)

您可以检查是否获得了 GLIBCXX 所需的版本,如下所示:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Run Code Online (Sandbox Code Playgroud)


dmn*_*dmn 7

如果您使用的是 Anaconda/Miniconda,您还可以libstdc++.so.6通过设置LD_LIBRARY_PATH环境变量让您的操作系统使用安装时提供的操作系统。假设您安装了 Miniconda/home/whatever/miniconda3并且正在使用bash. 然后将其添加到您的~/.bashrc

export LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/:/home/whatever/miniconda3/lib
Run Code Online (Sandbox Code Playgroud)

或者

export LD_LIBRARY_PATH=/home/whatever/miniconda3/lib
Run Code Online (Sandbox Code Playgroud)

source ~/.bashrc或者重新启动你的 shell,你应该就可以开始了。

另请参阅:https: //gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths如何更新 libstdc++.so.6 或更改文件以在 Tensorflow、Python 上使用

  • 这个答案帮助解决了我的问题。但是,我相信 LD_LIBRARY_PATH 的导出方式应该是这样的: `LD_LIBRARY_PATH=$LD_LIBRARY_PATH:...` 如本[answer](/sf/answers/2629073401/)所示 (2认同)

Ble*_*zus 0

所以,我刚刚测试了Stretch,效果很好。该问题与本例中的操作系统Debian 8 Jessie有关,它无法处理高于 3.4.20 的 glibcxxx 版本。

PSStretchDebian 9的发行版名称