Issue
This is a follow up to:
Based on the answer I tried again locally:
$ git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp.git
$ cd aws-sdk-cpp
$ mkdir build
$ cmake .. -DBUILD_ONLY=core -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=~/install
$ make install -i
I was forced to use '-i'
because at least one test is failing (seems like 'make test'
rule is inside 'make all'
).
then from my pet project:
% cat ../CMakeLists.txt
cmake_minimum_required(VERSION 3.2)
project(lambda-example)
set (CMAKE_CXX_STANDARD 11)
# Locate the aws sdk for c++ package.
find_package(AWSSDK REQUIRED COMPONENTS lambda)
# The executables to build.
set(EXAMPLES "")
list(APPEND EXAMPLES "main")
# The executables to build
foreach(EXAMPLE IN LISTS EXAMPLES)
add_executable(${EXAMPLE} ${EXAMPLE}.cpp)
target_link_libraries(${EXAMPLE} ${AWSSDK_LINK_LIBRARIES})
endforeach()
I get:
% cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/install
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- 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
-- 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 AWS SDK for C++, Version: 1.9.18, Install Root:/home/mathieu/install, Platform Prefix:, Platform Dependent Libraries: pthread;crypto;ssl;z;curl
-- Components specified for AWSSDK: lambda, application will be depending on libs: aws-cpp-sdk-lambda;aws-cpp-sdk-core;aws-crt-cpp;aws-c-auth;aws-c-cal;aws-c-common;aws-c-compression;aws-c-event-stream;aws-c-http;aws-c-io;aws-c-mqtt;aws-c-s3;aws-checksums;pthread;crypto;ssl;z;curl
-- Try finding aws-cpp-sdk-core
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
-- Found LibCrypto: /usr/lib/x86_64-linux-gnu/libcrypto.so
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib: /usr/lib/x86_64-linux-gnu/libcrypto.so
-- LibCrypto Static Lib: /usr/lib/x86_64-linux-gnu/libcrypto.so
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find LibCrypto (missing: LibCrypto_LIBRARY LibCrypto_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/home/mathieu/install/lib/s2n/cmake/modules/FindLibCrypto.cmake:61 (find_package_handle_standard_args)
/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/home/mathieu/install/lib/aws-c-cal/cmake/aws-c-cal-config.cmake:7 (find_dependency)
/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/home/mathieu/install/lib/aws-c-io/cmake/aws-c-io-config.cmake:8 (find_dependency)
/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/home/mathieu/install/lib/aws-c-http/cmake/aws-c-http-config.cmake:3 (find_dependency)
/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/home/mathieu/install/lib/aws-crt-cpp/cmake/aws-crt-cpp-config.cmake:3 (find_dependency)
/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake:47 (find_package)
/home/mathieu/install/lib/cmake/aws-cpp-sdk-core/aws-cpp-sdk-core-config.cmake:2 (find_dependency)
/home/mathieu/install/lib/cmake/AWSSDK/AWSSDKConfig.cmake:305 (find_package)
CMakeLists.txt:6 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/mathieu/workspace/junk/bin/CMakeFiles/CMakeOutput.log".
See also "/home/mathieu/workspace/junk/bin/CMakeFiles/CMakeError.log".
The above is based on the reading of the following:
- Building the SDK from source on EC2
- How to run any programming language on AWS Lambda: Custom Runtimes.
- C++ Code Samples for AWS Lambda
The error message seems to contradict itself:
-- Found LibCrypto: /usr/lib/x86_64-linux-gnu/libcrypto.so
[...]
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find LibCrypto (missing: LibCrypto_LIBRARY LibCrypto_INCLUDE_DIR)
What am I missing ?
Solution
I'm experiencing exactly the same issue as you have described.
When using AWS SDK for C++ version 1.9.27 (checked out from the tag),
the only way I could manage to build my application under CentOS 7 environment is the next cmake command:
$ mkdir build && cd build
$ cmake3 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr -DLibCrypto_INCLUDE_DIR=/usr/include -DLibCrypto_LIBRARY=/usr/lib64/libcrypto.so ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- 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
-- 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 PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
..............
..............
..............
-- Found Python: /usr/bin/python3.6 (found version "3.6.8") found components: Interpreter
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found AWS SDK for C++, Version: 1.9.27, Install Root:/usr, Platform Prefix:, Platform Dependent Libraries: pthread;crypto;ssl;z;curl
-- Components specified for AWSSDK: s3;s3-crt;core;transfer;iam;sts;identity-management, application will be depending on libs: aws-cpp-sdk-s3-crt;aws-cpp-sdk-transfer;aws-cpp-sdk-iam;aws-cpp-sdk-identity-management;aws-cpp-sdk-cognito-identity;aws-cpp-sdk-s3;aws-cpp-sdk-sts;aws-cpp-sdk-core;aws-crt-cpp;aws-c-auth;aws-c-cal;aws-c-common;aws-c-compression;aws-c-event-stream;aws-c-http;aws-c-io;aws-c-mqtt;aws-c-s3;aws-checksums;pthread;crypto;ssl;z;curl
-- Try finding aws-cpp-sdk-core
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found LibCrypto: /usr/lib64/libcrypto.so
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib: /usr/lib64/libcrypto.so
-- LibCrypto Static Lib: /usr/lib64/libcrypto.so
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- LibCrypto Include Dir: /usr/include
-- LibCrypto Shared Lib:
-- LibCrypto Static Lib:
-- Found aws-cpp-sdk-core
-- Try finding aws-cpp-sdk-sts
-- Found aws-cpp-sdk-sts
-- Try finding aws-cpp-sdk-s3
-- Found aws-cpp-sdk-s3
-- Try finding aws-cpp-sdk-cognito-identity
-- Found aws-cpp-sdk-cognito-identity
-- Try finding aws-cpp-sdk-identity-management
-- Found aws-cpp-sdk-identity-management
-- Try finding aws-cpp-sdk-iam
-- Found aws-cpp-sdk-iam
-- Try finding aws-cpp-sdk-transfer
-- Found aws-cpp-sdk-transfer
-- Try finding aws-cpp-sdk-s3-crt
-- Found aws-cpp-sdk-s3-crt
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/project/path/build
As you can notice, there is a bunch of the weird output lines about LibCrypto Include Dir: /usr/include
. I suppose there is the issue in AWS SDK cmake build configurations around using cmake cache variables for libcrypto stuff. After the above configuration command, I can successfully make -j4
and make install
my targets.
Version of cmake I used is 3.17.5
. GCC version is in the above output.
Answered By - Sergiy Kozak