在cmake_list

时间:2019-07-04 12:40:53

标签: c++ cmake openssl static-linking

我正在出于教育目的对加密程序进行编码。 我正在使用openssl作为加密库。问题是我想产生一个可以在未安装openssl的系统上运行的可执行文件。因此,我需要静态链接openssl。 我正在使用cmake_list进行构建。

一旦添加标志OPENSSL_USE_STATIC_LIBS TRUE,我就会收到链接器错误... 我曾尝试从源代码构建openssl并将其传递给find_package命令,但这仍然为我提供了所有openssl标头的链接器错误。

'''c++
cmake_minimum_required(VERSION 3.13)

project(encryption_test)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(OPENSSL_ROOT_DIR /usr/local/ssl)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_package(OpenSSL REQUIRED)

include_directories(
    include/)
add_executable(${PROJECT_NAME}
    src/main.cpp)

target_link_libraries(${PROJECT_NAME}
    stdc++fs
    OpenSSL::SSL)
'''

错误类似:

undefined reference to 'pthread_rwlock_init'

非常感谢您为我提供的任何帮助或想法!

1 个答案:

答案 0 :(得分:0)

我实际上用给出的答案解决了问题 Static linking of OpenSSL Crypto in CMake

提示target_link_libraries(program ${CMAKE_DL_LIBS})解决了我的链接器问题,以防万一其他人为此感到困惑。