/usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到 TensorFlow 所需的版本“GLIBCXX_3.4.21”
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found required by TensorFlow
我正在尝试使用机器学习库在 debian 服务器上部署 flask 应用程序,到目前为止,我用大多数方法做到了这一点ML 库,但由于 TensorFlow 我得到了这个错误,我对此进行了很多研究,但没有适合我的解决方案。
PS : 我正在为我的应用程序使用 3.7 python venv
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /flask/wstest/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
Mar 01 15:32:11 django gunicorn[8803]: Failed to load the native TensorFlow runtime.
我显然缺少 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
给出这个:
result of the toolchain add attempt
尝试了 apt-get update,明白了
W: Failed to fetch 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 版本。
所以,我刚刚测试了 Stretch,它工作正常。这个问题与 OS 在这种情况下 Debian 8 Jessie 相关,它无法处理比 3.4.20 更高版本的 glibcxxx。
PS : Stretch 是 Debian 9 的发行版名称
这是 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
您可以像这样检查您是否获得了所需的 GLIBCXX 版本:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
如果您正在使用 Anaconda/Miniconda,您还可以通过设置 LD_LIBRARY_PATH
环境变量让 OS 使用随安装提供的 libstdc++.so.6
。假设您在 /home/whatever/miniconda3
中安装了 Miniconda,并且您正在使用 bash
。然后将其添加到您的 ~/.bashrc
:
export LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/:/home/whatever/miniconda3/lib
或
export LD_LIBRARY_PATH=/home/whatever/miniconda3/lib
source ~/.bashrc
或重新启动您的 shell,您应该可以开始了。
另请参阅:https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths and How to update libstdc++.so.6 or change the file to use on Tensorflow, Python .
我正在尝试使用机器学习库在 debian 服务器上部署 flask 应用程序,到目前为止,我用大多数方法做到了这一点ML 库,但由于 TensorFlow 我得到了这个错误,我对此进行了很多研究,但没有适合我的解决方案。
PS : 我正在为我的应用程序使用 3.7 python venv
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /flask/wstest/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so) Mar 01 15:32:11 django gunicorn[8803]: Failed to load the native TensorFlow runtime.
我显然缺少 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
给出这个:
result of the toolchain add attempt
尝试了 apt-get update,明白了
W: Failed to fetch 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 版本。
所以,我刚刚测试了 Stretch,它工作正常。这个问题与 OS 在这种情况下 Debian 8 Jessie 相关,它无法处理比 3.4.20 更高版本的 glibcxxx。
PS : Stretch 是 Debian 9 的发行版名称
这是 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
您可以像这样检查您是否获得了所需的 GLIBCXX 版本:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
如果您正在使用 Anaconda/Miniconda,您还可以通过设置 LD_LIBRARY_PATH
环境变量让 OS 使用随安装提供的 libstdc++.so.6
。假设您在 /home/whatever/miniconda3
中安装了 Miniconda,并且您正在使用 bash
。然后将其添加到您的 ~/.bashrc
:
export LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/:/home/whatever/miniconda3/lib
或
export LD_LIBRARY_PATH=/home/whatever/miniconda3/lib
source ~/.bashrc
或重新启动您的 shell,您应该可以开始了。
另请参阅:https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths and How to update libstdc++.so.6 or change the file to use on Tensorflow, Python .