gpt4 book ai didi

c++ - 使用稍旧版本的 GLIBCXX

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:51 36 4
gpt4 key购买 nike

背景:我有运行 nodejs 6.10 的 AWS Lambda。对于我的代码,我需要一个 C 库来运行算法。这是由 node-gyp 在我的机器上编译的。

我的构建服务器是一个过时的 ubuntu 14.04,我在上面运行我的 node-gyp 编译代码,一切都按预期工作。

现在,我已经将我的 ubuntu 更新到 17.04 版本。这似乎给我带来了 Version of GLIBCXX 的问题

我通过运行收集了不同环境下的 GLIBCXX 版本

  1. /sbin/ldconfig -p | grep stdc++
  2. (使用 1 中的路径)strings/usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep LIBCXX

在这里您可以看到在 Ubuntu 17.04 上 GLIBCXX 从 v3.4 到 3.4.22 可用,而其他环境只有 3.4.19 可用。

我在 Ubuntu 17.04 上编译的代码正在寻找在运行环境中不可用的 GLIBCXX_3.4.21 并导致以下错误

"errorMessage": "/var/lang/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/addon.node)",

请求:是否有任何方法(除了使用自定义 docker /回到旧版本的 ubuntu 等)我可以将编译器设置为使用 GLIBCXX_3.4.19,我最终可以更改环境时(AWS lambda 支持最新版本?)。理想情况下,我正在寻找一个编译器标志,我可以在机器上或通过我可以传递的 node-gyp 永久设置,以便我使用正确的版本。

观察:即使我有 GLIBCXX_3.4.22,它也只是链接 GLIBCXX_3.4.21(或者它们向后兼容?)

最佳答案

Is there any method by which (other than using custom dockers / going back to older versions of ubuntu etc) where i can set the compiler to use GLIBCXX_3.4.19, which i can eventually change when the environments (AWS lambda supports the latest version?). Ideally i am looking for a compiler flag that i can set permanently on the machine or via node-gyp that i can pass on so that i use the right version.

您可以安装 earlier version of g++在 Ubuntu 17.04 上并使用该工具链编译您的软件。 g++-4.7 可以工作,但我不确定。检查当前构建机器上的版本。如果愿意,您甚至可以将这个较旧的编译器放入容器中,但这不是必需的。

even though I have GLIBCXX_3.4.22 it is only linkling GLIBCXX_3.4.21 ( or they are backward compatible? )

这些符号的全部意义在于具有明确定义的方式来指定 ABI 不兼容。您恰好没有使用 GLIBCXX_3.4.22 引入的任何更改,但确实使用了 GLIBCXX_3.4.22 引入的更改GLIBCXX_3.4.21(由您使用的任何编译器编译时)。

关于c++ - 使用稍旧版本的 GLIBCXX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035750/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com