cmake_list中的link openssl静态

Link OpenSSL statically in cmake_list

本文关键字:openssl 静态 link 中的 list cmake      更新时间:2023-10-16

我正在编码用于教育目的的加密程序。我正在使用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'

非常感谢您的帮助或想法,我如何解决此问题!

我实际上解决了问题cmake

中openssl加密的静态链接

提示target_link_libraries(program ${CMAKE_DL_LIBS})解决了我的链接问题,以防其他任何人挣扎。