这是对此处先前提出的问题的扩展:libstdc++ GLIBCXX version errors
我有一个Node.js应用程序,该应用程序在本地运行良好(Ubuntu 16.04),但是当我将捆绑包上传到AWS Elastic Beanstalk时,出现了与我的DLL相关的错误。该应用程序使用ffi节点模块以DLL(.so)的形式调用C ++函数。当应用程序在AWS上运行时,出现GLIBCXX版本错误,导致动态链接调用失败。
虽然关于先前问题的帖子建议使用静态链接而不是动态链接,但是对于我来说这不是一个选择,因为C ++附加组件必须是dll。似乎然后,我需要编译我的dll,使其使用较早版本的GLIBCXX。
我的问题是:
我如何知道我的AWS实例上正在运行哪个版本的GLIBCXX?
如何编译dll以使用GLIBCXX的早期版本?
无论如何,是否有解决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)
最佳答案
在这里找到答案:How to fix: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
使用-static-libstdc ++ gcc选项静态链接到libstdc ++。
由于某些原因,我不认为可以静态链接libstc ++,因为我的库是动态链接的。很高兴它奏效!