Как вы можете видеть в CMakeLists.txt, я установил для OPENSSL_NO_SHARED и OPENSSL_USE_STATIC_LIBS значение TRUE, а для CMAKE_FIND_LIBRARY_SUFFIXES > в .a. Кроме того, я использовал PRIVATE каждую ссылку на библиотеку. Тем не менее, двоичные файлы по-прежнему предпочитают *.so.1.1
Я использую cmake для создания своей программы. Я хочу статически связать OpenSSL с двоичными файлами. Текущий у меня есть этот CMakeLists.txt: [code]cmake_minimum_required(VERSION 3.0) project(Sphere-Linked) set(CMAKE_CXX_STANDARD 20) set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") #set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so")
if (UNIX AND NOT APPLE) find_library(UUID_LIB uuid REQUIRED) target_link_libraries(sphere-linked-server PRIVATE ${UUID_LIB}) endif() [/code] Однако двоичные файлы всегда содержат ссылки на libssl.so.1.1 вместо libssl.a (то же самое происходит и с libcrypto [code]jhean@debian-10:~$ ls /usr/lib/x86_64-linux-gnu/libssl. libssl.a libssl.so libssl.so.1.1 jhean@debian-10:~$ ldd sphere-linked-client linux-vdso.so.1 (0x00007fffc62fe000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f9a228bb000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9a2289a000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f9a22807000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9a22684000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a224c4000) /lib64/ld-linux-x86-64.so.2 (0x00007f9a22a47000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f9a221d8000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9a221d1000) jhean@debian-10:~$ [/code] Как вы можете видеть в CMakeLists.txt, я установил для OPENSSL_NO_SHARED и OPENSSL_USE_STATIC_LIBS значение TRUE, а для CMAKE_FIND_LIBRARY_SUFFIXES > в .a. Кроме того, я использовал PRIVATE каждую ссылку на библиотеку. Тем не менее, двоичные файлы по-прежнему предпочитают *.so.1.1