【问题标题】:GLIBCXX version error on AWSAWS 上的 GLIBCXX 版本错误
【发布时间】:2017-08-23 13:50:15
【问题描述】:

这是对上一个问题的扩展:libstdc++ GLIBCXX version errors

我有一个在本地运行良好的 Node.js 应用程序(Ubuntu 16.04),但是当我将包上传到 AWS Elastic Beanstalk 时,我收到与我的 DLL 相关的错误。该应用程序使用 ffi 节点模块以 DLL (.so) 的形式调用 C++ 函数。当应用程序在 AWS 上运行时,我收到 GLIBCXX 版本错误,导致动态链接调用失败。

虽然先前问题的帖子建议使用静态链接而不是动态链接,但这对我来说不是一个选项,因为 C++ 插件必须是 dll。看来我需要编译我的 dll 以便它使用早期版本的 GLIBCXX。

我的问题是:

  1. 我如何知道我的 AWS 实例上运行的是哪个版本的 GLIBCXX?
  2. 如何编译我的 dll 以使用早期版本的 GLIBCXX?
  3. 有没有办法在 AWS 实例本身上解决这些问题(即不需要将 dll 重新编译为早期版本的 GLIBCXX)

作为参考,这是我得到的确切错误:

错误:动态链接错误:/usr/lib64/libstdc++.so.6:版本 找不到“GLIBCXX_3.4.20”(需要 代码/C++/mathreco/TRUNK/src/lib/libsmath.so) 在新的 DynamicLibrary (/var/app/current/node_modules/ffi/lib/dynamic_library.js:74:11)

【问题讨论】:

    标签: c++ node.js amazon-web-services dll


    【解决方案1】:

    在这里找到答案:How to fix: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found

    使用 -static-libstdc++ gcc 选项静态链接到 libstdc++。

    由于某种原因,我认为我不能静态链接 libstc++,因为我的库是动态链接的。很高兴它成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 2019-11-08
      相关资源
      最近更新 更多