amazon-web-services - 在 Amazon Linux 2 上从源代码构建 AWS 开发工具包
问题描述
我正在尝试跟进aws-lamba-cpp 的建议,以降低构建应用程序的复杂性。
如果您选择在 lambda 使用的同一 Amazon Linux 版本上构建,则可以避免将 C 运行时打包到您的 zip 文件中。
看完之后:
这是我尝试过的:
% docker run -it amazonlinux:latest /bin/bash
$ cd /tmp/
$ yum -y install libcurl-devel openssl-devel libuuid-devel cmake3 wget tar gzip make gcc-c++
$ wget https://github.com/aws/aws-sdk-cpp/archive/refs/tags/1.9.9.tar.gz
$ tar xfz 1.9.9.tar.gz
$ cd aws-sdk-cpp-1.9.9/
$ mkdir build
$ cd build
$ cmake3 .. -DBUILD_ONLY=s3 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=ON
-- TARGET_ARCH not specified; inferring host OS to be platform compilation target
-- Building AWS libraries as shared objects
-- Generating linux build config
-- Building project version: 1.9.9
-- The CXX compiler identification is GNU 7.3.1
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.7")
-- Zlib library: /usr/lib64/libz.so
-- Encryption: Openssl
-- Found OpenSSL: /usr/lib64/libcrypto.so (found version "1.0.2k")
-- Openssl include directory: /usr/include
-- Openssl library: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so
-- Http client: Curl
-- Found CURL: /usr/lib64/libcurl.so (found version "7.61.1")
-- Curl include directory: /usr/include
-- Curl library: /usr/lib64/libcurl.so
-- Performing Test HAVE_ATOMICS_WITHOUT_LIBATOMIC
-- Performing Test HAVE_ATOMICS_WITHOUT_LIBATOMIC - Success
CMake Error at CMakeLists.txt:184 (include):
include could not find load file:
AwsFindPackage
CMake Error at CMakeLists.txt:194 (add_subdirectory):
The source directory
/tmp/aws-sdk-cpp-1.9.9/crt/aws-crt-cpp
does not contain a CMakeLists.txt file.
-- Add s3-crt:s3 to C2J_SPECIAL_NAME_LIST
-- Considering s3
-- Looking for pathconf
-- Looking for pathconf - found
-- Looking for umask
-- Looking for umask - found
-- The C compiler identification is GNU 7.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Updating version info to 1.9.9
-- Custom memory management enabled; stl objects now using custom allocators
-- Performing Test CURL_HAS_H2
-- Performing Test CURL_HAS_H2 - Success
-- Performing Test CURL_HAS_TLS_PROXY
-- Performing Test CURL_HAS_TLS_PROXY - Success
CMake Error at aws-cpp-sdk-core/CMakeLists.txt:496 (aws_use_package):
Unknown CMake command "aws_use_package".
-- Configuring incomplete, errors occurred!
See also "/tmp/aws-sdk-cpp-1.9.9/build/CMakeFiles/CMakeOutput.log".
See also "/tmp/aws-sdk-cpp-1.9.9/build/CMakeFiles/CMakeError.log".
在 Amazon Linux 2 系统上构建 aws-sdk-cpp 的正确解决方案是什么?
解决方案
过去几周发生了一些变化,以前对我来说效果很好,现在我遇到了和你一样的错误。
使用子模块克隆为我修复了它:
$ git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp.git
(对于 2.13 及更高版本的 Git,可以使用 --recurse-submodules 代替 --recursive)
推荐阅读
- vbscript - 随机重新排列单词中的字母
- javascript - 手风琴只打开一次然后出现故障
- python - 在 Windows 10 上安装 cusignal
- java - 如何在 Java 中的 if 语句中使用事件对象作为条件?
- git - Git切换分支忽略分支名称大小写
- c++ - AWS SDK C++ 安装/Embarcadero:CMake 错误 -fPIC
- php - 两个不同变量中的 PHP 数组
- node.js - 我想为每个虚拟应用程序托管 nodejs 实例,在 azure app 服务中只有一个文件夹的物理位置
- graphql - 带有命名空间查询的 Apollo Client 3.0 缓存
- javascript - JavaScript 自动图像幻灯片放映错误