cmake 链接到 OpenSSL 失败对 openssl 函数的未定义引用

问题描述 投票:0回答:1

我正在尝试使用 CMake 构建一个链接到 openssl 的项目。 我在链接阶段遇到错误。 即使共享库已成功构建,共享库之一也无法找到某些 openssl 函数。

错误输出中突出显示错误的部分是:

[ 61%] Building C object CMakeFiles/uSockets.dir/_deps/usockets_content-src/src/quic.c.o
[ 66%] Building C object CMakeFiles/uSockets.dir/_deps/usockets_content-src/src/socket.c.o
[ 72%] Building C object CMakeFiles/uSockets.dir/_deps/usockets_content-src/src/udp.c.o
[ 77%] Linking C shared library libuSockets.so
[ 77%] Built target uSockets
[ 83%] Building CXX object CMakeFiles/client.dir/client_ws.cc.o
[ 88%] Linking CXX executable client
[ 88%] Built target client
[ 94%] Building CXX object CMakeFiles/server.dir/server_ws.cc.o
[100%] Linking CXX executable server
/usr/bin/ld: libuSockets.so: undefined reference to `us_internal_ssl_socket_context_on_long_timeout'
/usr/bin/ld: libuSockets.so: undefined reference to `us_internal_ssl_socket_get_native_handle'
/usr/bin/ld: libuSockets.so: undefined reference to `us_internal_create_child_ssl_socket_context'
/usr/bin/ld: libuSockets.so: undefined reference to `us_internal_ssl_socket_get_sni_userdata'
/usr/bin/ld: libuSockets.so: undefined reference to `us_internal_ssl_socket_context_connect_unix'

完整的 cmakelists.txt 位于 https://pastebin.com/TVrYhMVc

完整的 cmake 输出位于 https://pastebin.com/1Bvd8GzQ

我缺少什么想法吗?

c++ cmake openssl linker-errors uwebsockets
1个回答
0
投票

这一行:

target_compile_definitions(uSockets INTERFACE LIBUS_USE_OPENSSL)

为链接到 uSockets

 的目标定义 LIBUS_USE_OPENSSL 符号 。
将链接类型更改为 
PUBLIC
,以便在构建库目标本身时也使用它。

© www.soinside.com 2019 - 2024. All rights reserved.