AWS上的GLIBCXX版本错误

时间:2017-03-29 21:14:05

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

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

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

虽然以前的问题上的帖子建议使用静态链接而不是动态链接,但这不是我的选择,因为C ++插件必须是dll。似乎我需要编译我的dll,以便它使用早期版本的GLIBCXX。

我的问题是:

  1. 我如何知道我的AWS实例上正在运行哪个版本的GLIBCXX?
  2. 如何编译我的dll以使用早期版本的GLIBCXX?
  3. 无论如何都要在AWS实例本身上解决这些问题(即不要求将dll重新编译为早期版本的GLIBCXX)
  4. 供参考,以下是我得到的确切错误:

      

    错误:动态链接错误:/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)

1 个答案:

答案 0 :(得分:0)

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

  

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

出于某种原因,我不认为我可以静态链接libstc ++,因为我的库是动态链接的。很高兴它有效!