Ссылка OpenSSL статически в cmake_list - PullRequest
0 голосов
/ 04 июля 2019

Я кодирую программу шифрования для образовательных целей. Я использую 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 голосов
/ 04 июля 2019

Я действительно решил проблему с ответом, данным в Статическое связывание OpenSSL Crypto в CMake

Подсказка target_link_libraries(program ${CMAKE_DL_LIBS}) решила мои проблемы с компоновщиком, на случай, если кто-то еще столкнется с этим.

...