Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27'

Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27'

我正在为 Mac (10.9+) 和 Linux (Ubuntu 18) 构建我的节点模块(使用 N-API)。当我将我的模块部署到远程机器(到 Heroku)时,我得到:

Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /opt/atlassian/pipelines/agent/build/addons/Release-linux/module.node)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:717:18)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    (...)

运行 ldd --version 在两台机器上:

~ $ ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27

和:

~ $ ls /lib/x86_64-linux-gnu/
libm.so.6 (...)

此外,我不确定为什么需要链接到 libm,因为我没有在我的代码中使用 #include <math.h>(编译器正在隐式添加 libm?)。

如有任何帮助,我们将不胜感激。

您需要部署到与您的构建环境兼容的操作系统中。通常,这意味着使用相同的分发版本。在某些情况下,也可以部署在同一发行版的较新版本上。

您的 Ubuntu 版本使用 glibc 2.27。您的部署目标使用了更早的东西,大概是 Heroku-16 or Cedar-14, since you said you are trying to deploy on Heroku. You either have to rebuild your software in a matching build environment (for example, using pbuilder, or using a virtual machine), or deploy into something that is compatible with your version of Ubuntu (presumably, Heroku-18).