में मैं स्थिर पुस्तकालयों नीचे दिए गए लिंक करना चाहते हैं:स्थिर लिंक करना OpenSSL क्रिप्टो पुस्तकालय CMake
set_target_properties(exec PROPERTIES LINK_SEARCH_START_STATIC 1)
set_target_properties(exec PROPERTIES LINK_SEARCH_END_STATIC 1)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
find_library(SODIUM_LIB libsodium.a REQUIRED)
find_library(SSL_LIB libssl.a REQUIRED)
find_library(CRYPTO_LIB libcrypto.a REQUIRED)
find_library(DL_LIB libdl.a REQUIRED)
message(${SODIUM_LIB})
message(${SSL_LIB})
message(${CRYPTO_LIB})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
target_link_libraries(
exec
${SODIUM_LIB}
${SSL_LIB}
${CRYPTO_LIB}
${DL_LIB}
मैं CMAKE_EXE_LINKER_FLAGS
को -static
जोड़ने के लिए है, क्योंकि उस मामले में सब कुछ स्थिर जुड़ा हुआ है नहीं करना चाहती। CMake स्थिर पुस्तकालयों पाता है:
/usr/local/lib/libsodium.a
/usr/lib/x86_64-linux-gnu/libssl.a
/usr/lib/x86_64-linux-gnu/libcrypto.a
और ऐसा लगता है कि सब कुछ libcrypto
छोड़कर स्थिर जुड़ा हुआ है:
readelf -d exec
0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.1.0.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
मैं अपने निष्पादन के लिए स्थिर libcrypto
लिंक कर सकते हैं?
आप आप वास्तव में सही पुस्तकालय की जाँच की है? इसके अलावा यह उस पथ को वैकल्पिक रूप से परिभाषित करने में मदद कर सकता है जहां स्थिर पुस्तकालय पाया जाना है। –