Amazon web services Lambda是否允许libstdc++;。那么,6号?AWS lambda是否有GCC-8.0.1?

Amazon web services Lambda是否允许libstdc++;。那么,6号?AWS lambda是否有GCC-8.0.1?,amazon-web-services,docker,gcc,amazon-s3,aws-lambda,Amazon Web Services,Docker,Gcc,Amazon S3,Aws Lambda,我有一个关于允许在AWS云上运行的文件的问题 我有一个项目,它包含C++文件,但使用Python包装器。因此,该项目具有.py和.cpp文件 现在,问题归结到当我尝试将这个项目部署到云上时。我能够做到这一点,但由于依赖关系,我遇到了一个GLIBSTD错误:(无法导入模块“handler”:usr/lib64/libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”(由/var/task/lgraph.cpython-36m-x86_64-linux-gnu.so所需) 这个项目是

我有一个关于允许在AWS云上运行的文件的问题

我有一个项目,它包含C++文件,但使用Python包装器。因此,该项目具有.py和.cpp文件

现在,问题归结到当我尝试将这个项目部署到云上时。我能够做到这一点,但由于依赖关系,我遇到了一个GLIBSTD错误:(无法导入模块“handler”:usr/lib64/libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”(由/var/task/lgraph.cpython-36m-x86_64-linux-gnu.so所需)

这个项目是在我的ArchLinux机器上构建的,我检查了什么依赖关系是一个问题,它是libstdc++.so.6,如下所示

server1:~$/sbin/ldconfig-p | grep stdc++

libstdc++.so.6 (libc6,x86-64) => /usr/lib/libstdc++.so.6
libstdc++.so.6 (libc6) => /usr/lib32/libstdc++.so.6
libstdc++.so.5 (libc6) => /usr/lib32/libstdc++.so.5
libstdc++.so (libc6,x86-64) => /usr/lib/libstdc++.so
libstdc++.so (libc6) => /usr/lib32/libstdc++.so
TL:DR:AWS Lambda没有gcc-8.0.1吗?它不能理解如何编译它吗?


我询问gcc-8.0.1的原因是因为我在docker上部署了这个项目,我也遇到了同样的GLIB错误,所以我手动在docker容器上安装了gcc-8.0.1。程序100%完美地工作了…

有点晚了,但是如果你有libstdc++.so.6文件,你可以包含在lambda层中并进行部署

压缩前,必须将.so文件放入
lib/
文件夹,并将压缩文件作为lambda层上传。然后将该层绑定到函数,它应该可以工作

博士

Lambda层只是解压缩到Lambda函数的
opt/
目录中的zip文件。
opt/
目录是特殊的,因为
opt/bin
在$PATH中,
opt/lib
在$LD\u LIBRARY\u路径中

因此,如果您将预构建的库文件(如libstdc++.So.6)放入lambda层的
lib/
文件夹中,则可以从正在运行的lambda函数中引用它。您可能还必须将二进制文件放入
bin/
文件夹中,以确保一切正常。但请注意,当前lambda中的$PATH优先考虑其他directories位于
opt/bin
文件夹之前,因此如果lambda中已存在二进制文件,则将使用默认版本而不是层中的版本。您需要修改$PATH以确保使用层中
/opt/bin
中的二进制文件