AWS lambda 生成 `CXXABI_1.3.9' 在本机库调用中找不到

AWS lambda producing `CXXABI_1.3.9' not found on native library call

当我在 AWS lambda

中加载本机库时,我不断收到以下错误
/tmp/libKinesisVideoProducerJNI.so: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /tmp/libKinesisVideoProducerJNI.so): java.lang.UnsatisfiedLinkError
java.lang.UnsatisfiedLinkError: /tmp/libKinesisVideoProducerJNI.so: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /tmp/libKinesisVideoProducerJNI.so)

我读到它与编译和 运行 时环境之间的差异有关,被调用的本地库是 AWS kinesis,我该如何解决这个问题?

我通过创建一个类似于 lambda 使用的实例解决了这个问题

Public亚马逊LinuxAMI版本(AMI名称:amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2

然后我不得不使用源代码再次编译库 https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp 再次在那个实例上,它起作用了

如果您最近更改了构建环境(我在 Docker 中构建并更改了基础映像的版本以更好地匹配 AWS Lambda 环境)然后记得做一个 make clean或类似以确保所有文件在此更改后得到重建。否则会重复使用之前环境中的一些编译文件,这会导致同样的错误。

在最坏的情况下,删除 node_modules 文件夹并再次 运行 npm install,如果 npm rebuild 无效。