【发布时间】:2020-07-25 23:34:05
【问题描述】:
root@760501de936d:/home/project/build# ldconfig -p | grep ssl
libssl.so.1.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.1
libssl.so.1.0.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
libssl.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so
我的项目正在尝试与 OpenSSL 链接。如何强制它使用libssl.so.1.1?
我正在使用 cmake
find_library(LIB_SSL ssl)
然后
target_link_libraries(h264_decoder_cli PRIVATE
${LIB_SSL} ${LIB_CRYPTO} ...)
但是我得到了类似的东西
tls_openssl.c:(.text+0x3a8): undefined reference to `OPENSSL_init_ssl'
不知道为什么,只有1.1版有这个符号
root@760501de936d:/home/project/build# nm -D /usr/lib/x86_64-linux-gnu/libssl.so | grep OPENSSL_init_ssl
root@760501de936d:/home/project/build# nm -D /usr/lib/x86_64-linux-gnu/libssl.so.1.1 | grep OPENSSL_init_ssl
0000000000033ff0 T OPENSSL_init_ssl
我检查了 cmake 是如何编译的,它只是把-lssl -lcrypto
【问题讨论】:
-
@xhienne
libssl.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so这是什么意思?如果是,那么他们的nm输出将是相同的 -
@PakUula 我尝试使用
find_library(LIB_SSL ssl NAMES libssl.so.1.1 PATHS /usr/lib/x86_64-linux-gnu/)强制执行此行为,但我在输出中看到它只执行-lssl
标签: ssl cmake openssl linker shared-libraries