Docker撰写libstdc ++。so.6 GLIBCXX_3.4.21未找到

时间:2017-02-26 04:49:11

标签: c++ c node.js docker-compose ubuntu-16.04

在我的节点目录中运行docker-compose up时,我得到了

/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /app/node_modules/bcrypt/lib/binding/bcrypt_lib.node)

但我绝对有这种瑕疵:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.2
GLIBCXX_3.4.2
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22

我试过

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

根据https://askubuntu.com/questions/164296/glibcxx-3-4-15-not-found,但我得到了同样的错误。我不知道如何解决这个问题,并且无法在其他任何地方找到解决方案。

如果重要的话,这是在Ubuntu 16.04上。

1 个答案:

答案 0 :(得分:1)

npm上的某些节点插件使用node-pre-gyp来提供下载预编译的插件二进制文件的功能,这样您就不需要安装编译器来使用它(主要用于Windows,通常比较困难)建立一个构建环境。)

对于这些类型的插件,您可以指定--build-from-source command line option告诉node-pre-gyp始终在本地编译,而不是下载其中一个预编译的插件二进制文件。

通过使用此标志安装插件,可以在使用不同glibc ABI的旧/新机器上编译预编译的插件二进制文件时避免此类错误。