AWS开发工具包C ++:无法运行S3示例

时间:2019-11-23 18:00:38

标签: amazon-s3 aws-sdk

我们正在尝试使用setupthread在EC2服务器上构建适用于C ++的AWS开发工具包(仅s3模块)

它编译良好,包括带有测试的s3

接下来,我尝试编译 example

但是,CMake抛出错误(如错误消息所示,文件 / usr / local / lib / aws-c-event-stream / cmake / static / aws-c-event-stream-targets .cmake 不存在)。我该如何解决?

ubuntu@ip:~/awslog$ mkdir sdk_example_builds
ubuntu@ip:~/awslog$ cd sdk_example_builds/
ubuntu@ip:~/awslog/sdk_example_builds$ mkdir s3 && cd s3
ubuntu@ip:~/awslog/sdk_example_builds/s3$ sudo cmake /home/ubuntu/awslog/aws-doc-sdk-examples/cpp/example_code/s3


-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
CMake Error at /usr/local/lib/aws-c-common/cmake/aws-c-common-config.cmake:7 (include):
  include could not find load file:

    /usr/local/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
  /usr/local/lib/aws-c-event-stream/cmake/aws-c-event-stream-config.cmake:2 (find_dependency)
  /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
  /usr/local/lib/cmake/aws-cpp-sdk-core/aws-cpp-sdk-core-config.cmake:2 (find_dependency)
  /usr/local/lib/cmake/AWSSDK/AWSSDKConfig.cmake:292 (find_package)
  CMakeLists.txt:15 (find_package)


CMake Error at /usr/local/lib/aws-checksums/cmake/aws-checksums-config.cmake:4 (include):
  include could not find load file:

    /usr/local/lib/aws-checksums/cmake/static/aws-checksums-targets.cmake
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
  /usr/local/lib/aws-c-event-stream/cmake/aws-c-event-stream-config.cmake:3 (find_dependency)
  /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
  /usr/local/lib/cmake/aws-cpp-sdk-core/aws-cpp-sdk-core-config.cmake:2 (find_dependency)
  /usr/local/lib/cmake/AWSSDK/AWSSDKConfig.cmake:292 (find_package)
  CMakeLists.txt:15 (find_package)


CMake Error at /usr/local/lib/aws-c-event-stream/cmake/aws-c-event-stream-config.cmake:8 (include):
  include could not find load file:

    /usr/local/lib/aws-c-event-stream/cmake/static/aws-c-event-stream-targets.cmake
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
  /usr/local/lib/cmake/aws-cpp-sdk-core/aws-cpp-sdk-core-config.cmake:2 (find_dependency)
  /usr/local/lib/cmake/AWSSDK/AWSSDKConfig.cmake:292 (find_package)
  CMakeLists.txt:15 (find_package)


-- Found aws-cpp-sdk-core
-- Try finding aws-cpp-sdk-s3
-- Found aws-cpp-sdk-s3
-- Configuring incomplete, errors occurred!
See also "/home/ubuntu/awslog/sdk_example_builds/s3/CMakeFiles/CMakeOutput.log".
See also "/home/ubuntu/awslog/sdk_example_builds/s3/CMakeFiles/CMakeError.log".

1 个答案:

答案 0 :(得分:0)

从您的日志中可以很明显地看出,该错误与my_dict = {'eric': ['12', '12'], 'ted': ['12', 102]} n = input("name\n>>") if n in my_dict: print(my_dict[n]) else: print("error") 库类型有关。

在您的情况下,cmake被调用为默认的静态库;您可以通过查看其查找的路径来看到它:

cmake

为了能够编译您的示例,只需运行CMake告诉它链接共享库,如下所示:

/usr/local/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake

然后

sudo cmake /home/ubuntu/awslog/aws-doc-sdk-examples/cpp/example_code/s3 -DBUILD_SHARED_LIBS=ON

您完成了!

P.S .:尚不清楚为什么AWS开发工具包SDK库不包含静态cmake文件(您的配置中可能缺少某些文件)。但是,通过这种方式,您可以使用SDK的共享库版本,并且可以以相同的方式工作。