我正在出于教育目的对加密程序进行编码。 我正在使用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'
非常感谢您为我提供的任何帮助或想法!
答案 0 :(得分:0)
我实际上用给出的答案解决了问题 Static linking of OpenSSL Crypto in CMake
提示target_link_libraries(program ${CMAKE_DL_LIBS})
解决了我的链接器问题,以防万一其他人为此感到困惑。