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
无效。
当我在 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
无效。