@hauptling

Как решить проблему линковки libcurl + wolfssl?

Добрый день!
Столкнулся с проблемой линковки libcurl (версия 7.83) и wolfssl(последний выпуск).
Система mint 20.3, проблема линковки актуальна и под win10.
Использую cmake для автоматизации сборки, если взять mint, где нет нативной поддержки tls(актуально для win7), то
в cmakelists libcurl ставлю флаг
cmake_dependent_option(CURL_USE_WOLFSSL "enable wolfSSL for SSL/TLS" ON CURL_ENABLE_SSL ON)


В wolfssl создаю статическую либу, тк далее вся линковка статическая, тк такая задача.

option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF)


Также поменял это, тк согласно документации в wolfssl с curl нужно отключить данную опцию:
add_option("WOLFSSL_OLD_NAMES"
    "Keep backwards compat with old names (default: enabled)"
    "no" "yes;no")


Wolfsll компилирую и устанавливаю в local/lib системы.

На уровне всего проекта подключаю wolfssl

target_link_libraries(${PROJECT_NAME} PRIVATE
            ${Boost_LIBRARIES}
            libcurl
            wolfssl
            )


Ошибки:

usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `multi_getsock':
multi.c:(.text+0x1dd): undefined reference to `Curl_ssl'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `init_completed':
multi.c:(.text+0x897): undefined reference to `Curl_connect_done'
/usr/bin/ld: multi.c:(.text+0x8b4): undefined reference to `Curl_ssl_detach_conn'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `Curl_detach_connnection':
multi.c:(.text+0x1557): undefined reference to `Curl_connect_done'
/usr/bin/ld: multi.c:(.text+0x1574): undefined reference to `Curl_ssl_detach_conn'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `Curl_multi_add_perform':
multi.c:(.text+0x2814): undefined reference to `Curl_ssl_associate_conn'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `multi_done':
multi.c:(.text+0x2a1b): undefined reference to `Curl_connect_done'
/usr/bin/ld: multi.c:(.text+0x2a38): undefined reference to `Curl_ssl_detach_conn'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `curl_multi_remove_handle':
multi.c:(.text+0x3189): undefined reference to `Curl_connect_done'
/usr/bin/ld: multi.c:(.text+0x31a7): undefined reference to `Curl_ssl_detach_conn'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `multi_runsingle':
multi.c:(.text+0x38ab): undefined reference to `Curl_connect_done'
/usr/bin/ld: multi.c:(.text+0x38c8): undefined reference to `Curl_ssl_detach_conn'
/usr/bin/ld: multi.c:(.text+0x3bf0): undefined reference to `Curl_proxy_connect'
/usr/bin/ld: multi.c:(.text+0x3c81): undefined reference to `Curl_http_connect'
/usr/bin/ld: multi.c:(.text+0x42b0): undefined reference to `Curl_connect_free'
/usr/bin/ld: multi.c:(.text+0x43f9): undefined reference to `Curl_connect_complete'
/usr/bin/ld: multi.c:(.text+0x44e5): undefined reference to `Curl_connect_done'
/usr/bin/ld: multi.c:(.text+0x4502): undefined reference to `Curl_ssl_detach_conn'
/usr/bin/ld: multi.c:(.text+0x467e): undefined reference to `Curl_connect_free'
/usr/bin/ld: multi.c:(.text+0x48d1): undefined reference to `Curl_connect_ongoing'
/usr/bin/ld: multi.c:(.text+0x4946): undefined reference to `Curl_connect_ongoing'
/usr/bin/ld: multi.c:(.text+0x4c94): undefined reference to `Curl_connect_free'
/usr/bin/ld: multi.c:(.text+0x4df4): undefined reference to `Curl_connect_ongoing'
/usr/bin/ld: multi.c:(.text+0x4e29): undefined reference to `Curl_connect_ongoing'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `multi_getsock':
multi.c:(.text+0x157): undefined reference to `Curl_connect_getsock'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(multi.c.o): in function `Curl_attach_connnection':
multi.c:(.text+0x15e5): undefined reference to `Curl_ssl_associate_conn'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(easy.c.o): in function `curl_global_init':
easy.c:(.text+0xc6): undefined reference to `Curl_ssl_init'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(easy.c.o): in function `curl_global_init_mem':
easy.c:(.text+0x17e): undefined reference to `Curl_ssl_init'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(easy.c.o): in function `curl_global_cleanup':
easy.c:(.text+0x1e5): undefined reference to `Curl_ssl_cleanup'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(easy.c.o): in function `curl_easy_init':
easy.c:(.text+0x273): undefined reference to `Curl_ssl_init'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(easy.c.o): in function `curl_easy_duphandle':
easy.c:(.text+0xb18): undefined reference to `Curl_ssl_set_engine'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(getinfo.c.o): in function `Curl_initinfo':
getinfo.c:(.text+0xe0): undefined reference to `Curl_ssl_free_certinfo'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(getinfo.c.o): in function `Curl_getinfo':
getinfo.c:(.text+0x2fd): undefined reference to `Curl_ssl_backend'
/usr/bin/ld: getinfo.c:(.text+0x35b): undefined reference to `Curl_ssl'
/usr/bin/ld: getinfo.c:(.text+0x391): undefined reference to `Curl_ssl_engines_list'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(rand.c.o): in function `Curl_rand':
rand.c:(.text+0xbf): undefined reference to `Curl_ssl_random'
/usr/bin/ld: thirdparty/curl/lib/libcurl.a(setopt.c.o): in function `Curl_vsetopt':


ПС если проект линковать с openSSL, то никаких проблем нет, все работает.
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы