Мне нужно скомпилировать программу для платформы, которая не поддерживает динамическое связывание. Как смешать openssl 1.0.2f и openssl1.1 при использовании ld?
Мне нужно скомпилировать проект для встроенной Unix-совместимой системы, которая не поддерживает динамическое связывание (все еще есть ядро и исполняемые файлы, загружаемые файлами). Я не являюсь разработчиком проекта, но мне интересно запускать его на маломощных устройствах. Существует патч для компиляции binutils и gcc для этой платформы (поэтому набор инструментов - это обычные gcc и binutils).
Я нахожусь в следующей ситуации:
Project
требует третьей стороныLibrary A
и третье лицоLibrary B
,Library A
не может быть скомпилирован с последним libssl, и требуетopenssl1.0.x
Library B
не может быть скомпилировано противopenssl1.0.x
и совместим только с последними версиями openssl.
Project
не имеет ничего особенного в отношении встраивания и предназначен для работы на любой платформе. Таким образом, в нормальной ситуации (когда возможно динамическое связывание), LibraryA.so
а также LibraryB.so
содержит DT_NEEDED
для каждой необходимой версии openssl.
Но со статической связью все происходит так:
target-g++ $SOURCE_OBJECTS -flto -Wl,--start-group -lpcre -lraryA -lraryB -lbsd -lphthread -ltiff -ljbig -lcrypto -lssl ~/libcrypto1.0.2f.a ~/libssl1.0.2f.a -lpng -ljpeg -lminupnpc /usr/lib/libdb_cxx-4.8.a -Wl,--end-group -o lightwhite_server -ffast-math -Os -flto-partition=none -fmerge-all-constants -frename-registers -fweb
/usr/lib/libcrypto.a(sha512.o): In function `SHA512_Init':
(.text+0xa8): multiple definition of `SHA512_Init'
/usr/lib/libbsd.a(sha512c.o): (.text+0x22e0): first defined here
/usr/lib/libcrypto.a(sha512.o): In function `SHA512_Final':
(.text+0x150): multiple definition of `SHA512_Final'
/usr/lib/libbsd.a(sha512c.o): (.text+0x2470): first defined here
/usr/lib/libcrypto.a(sha512.o): In function `SHA512_Update':
(.text+0x340): multiple definition of `SHA512_Update'
/usr/lib/libbsd.a(sha512c.o): (.text+0x2378): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLS_method':
(.text+0xe0): multiple definition of `DTLS_method'
/usr/lib/libssl.a(d1_meth.o): (.text+0x70): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLS_server_method':
(.text+0x110): multiple definition of `DTLS_server_method'
/usr/lib/libssl.a(d1_srvr.o): (.text+0xe28): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLS_client_method':
(.text+0x150): multiple definition of `DTLS_client_method'
/usr/lib/libssl.a(d1_clnt.o): (.text+0xbb0): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_2_method':
(.text+0x160): multiple definition of `TLSv1_2_method'
/usr/lib/libssl.a(t1_meth.o): (.text+0x48): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_2_server_method':
(.text+0x168): multiple definition of `TLSv1_2_server_method'
/usr/lib/libssl.a(t1_srvr.o): (.text+0x48): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_2_client_method':
(.text+0x170): multiple definition of `TLSv1_2_client_method'
/usr/lib/libssl.a(t1_clnt.o): (.text+0x48): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_1_method':
(.text+0x178): multiple definition of `TLSv1_1_method'
/usr/lib/libssl.a(t1_meth.o): (.text+0x58): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_1_server_method':
(.text+0x180): multiple definition of `TLSv1_1_server_method'
/usr/lib/libssl.a(t1_srvr.o): (.text+0x58): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_1_client_method':
(.text+0x188): multiple definition of `TLSv1_1_client_method'
/usr/lib/libssl.a(t1_clnt.o): (.text+0x58): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_method':
(.text+0x190): multiple definition of `TLSv1_method'
/usr/lib/libssl.a(t1_meth.o): (.text+0x68): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_server_method':
(.text+0x198): multiple definition of `TLSv1_server_method'
/usr/lib/libssl.a(t1_srvr.o): (.text+0x68): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `TLSv1_client_method':
(.text+0x1a0): multiple definition of `TLSv1_client_method'
/usr/lib/libssl.a(t1_clnt.o): (.text+0x68): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLSv1_2_method':
(.text+0x1a8): multiple definition of `DTLSv1_2_method'
/usr/lib/libssl.a(d1_meth.o): (.text+0x60): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLSv1_2_server_method':
(.text+0x1b0): multiple definition of `DTLSv1_2_server_method'
/usr/lib/libssl.a(d1_srvr.o): (.text+0xe18): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLSv1_2_client_method':
(.text+0x1b8): multiple definition of `DTLSv1_2_client_method'
/usr/lib/libssl.a(d1_clnt.o): (.text+0xba0): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLSv1_method':
(.text+0x1c0): multiple definition of `DTLSv1_method'
/usr/lib/libssl.a(d1_meth.o): (.text+0x50): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLSv1_server_method':
(.text+0x1c8): multiple definition of `DTLSv1_server_method'
/usr/lib/libssl.a(d1_srvr.o): (.text+0xe08): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(methods.o): In function `DTLSv1_client_method':
(.text+0x1d0): multiple definition of `DTLSv1_client_method'
/usr/lib/libssl.a(d1_clnt.o): (.text+0xb90): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `ssl_undefined_function':
(.text+0xf8): multiple definition of `ssl_undefined_function'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x28): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_set_ssl_version':
(.text+0x5d0): multiple definition of `SSL_CTX_set_ssl_version'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x170): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_set_session_id_context':
(.text+0x6d0): multiple definition of `SSL_CTX_set_session_id_context'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x1f8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_session_id_context':
(.text+0x728): multiple definition of `SSL_set_session_id_context'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x250): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_set_generate_session_id':
(.text+0x780): multiple definition of `SSL_CTX_set_generate_session_id'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x2a8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_generate_session_id':
(.text+0x7b8): multiple definition of `SSL_set_generate_session_id'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x308): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_has_matching_session_id':
(.text+0x7f0): multiple definition of `SSL_has_matching_session_id'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x368): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_set_purpose':
(.text+0x8b0): multiple definition of `SSL_CTX_set_purpose'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x478): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_purpose':
(.text+0x8b8): multiple definition of `SSL_set_purpose'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x480): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_set_trust':
(.text+0x8c0): multiple definition of `SSL_CTX_set_trust'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x488): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_trust':
(.text+0x8c8): multiple definition of `SSL_set_trust'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x490): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_set1_param':
(.text+0x1240): multiple definition of `SSL_CTX_set1_param'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x498): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set1_param':
(.text+0x1248): multiple definition of `SSL_set1_param'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x4a0): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_get0_param':
(.text+0x1250): multiple definition of `SSL_CTX_get0_param'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x4a8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get0_param':
(.text+0x1258): multiple definition of `SSL_get0_param'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x4b0): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_certs_clear':
(.text+0x1260): multiple definition of `SSL_certs_clear'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x4b8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_rbio':
(.text+0x12e8): multiple definition of `SSL_get_rbio'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x548): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_wbio':
(.text+0x12f0): multiple definition of `SSL_get_wbio'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x550): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_bio':
(.text+0x1308): multiple definition of `SSL_set_bio'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x4c0): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_rfd':
(.text+0x13f0): multiple definition of `SSL_get_rfd'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x558): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_fd':
(.text+0x1460): multiple definition of `SSL_get_fd'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x5c8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_wfd':
(.text+0x1468): multiple definition of `SSL_get_wfd'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x5d0): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_fd':
(.text+0x14d8): multiple definition of `SSL_set_fd'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x640): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_wfd':
(.text+0x1560): multiple definition of `SSL_set_wfd'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x6c8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_rfd':
(.text+0x1638): multiple definition of `SSL_set_rfd'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x7a8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_finished':
(.text+0x1710): multiple definition of `SSL_get_finished'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x888): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_peer_finished':
(.text+0x1750): multiple definition of `SSL_get_peer_finished'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x8c8): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_verify_mode':
(.text+0x1790): multiple definition of `SSL_get_verify_mode'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x908): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_verify_depth':
(.text+0x1798): multiple definition of `SSL_get_verify_depth'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x910): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_verify_callback':
(.text+0x17a0): multiple definition of `SSL_get_verify_callback'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x918): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_get_verify_mode':
(.text+0x17a8): multiple definition of `SSL_CTX_get_verify_mode'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x920): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_get_verify_depth':
(.text+0x17b0): multiple definition of `SSL_CTX_get_verify_depth'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x928): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_CTX_get_verify_callback':
(.text+0x17b8): multiple definition of `SSL_CTX_get_verify_callback'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x930): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_verify':
(.text+0x17c0): multiple definition of `SSL_set_verify'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x938): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_verify_depth':
(.text+0x17d0): multiple definition of `SSL_set_verify_depth'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x948): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_set_read_ahead':
(.text+0x17d8): multiple definition of `SSL_set_read_ahead'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x950): first defined here
/home/CrossCompileUser/libssl1.0.2f.a(ssl_lib.o): In function `SSL_get_read_ahead':
(.text+0x17e0): multiple definition of `SSL_get_read_ahead'
/usr/lib/libssl.a(ssl_lib.o): (.text+0x958): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_new':
(.text+0x0): multiple definition of `BIO_new'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xa8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_free':
(.text+0x140): multiple definition of `BIO_free'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x128): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_vfree':
(.text+0x268): multiple definition of `BIO_vfree'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x1f0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_clear_flags':
(.text+0x2e8): multiple definition of `BIO_clear_flags'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x1f8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_test_flags':
(.text+0x2f8): multiple definition of `BIO_test_flags'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x208): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_set_flags':
(.text+0x308): multiple definition of `BIO_set_flags'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x218): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_get_callback':
(.text+0x318): multiple definition of `BIO_get_callback'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x228): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_set_callback':
(.text+0x320): multiple definition of `BIO_set_callback'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x230): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_set_callback_arg':
(.text+0x328): multiple definition of `BIO_set_callback_arg'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x238): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_get_callback_arg':
(.text+0x330): multiple definition of `BIO_get_callback_arg'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x240): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_method_name':
(.text+0x338): multiple definition of `BIO_method_name'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x248): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_method_type':
(.text+0x348): multiple definition of `BIO_method_type'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x258): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_read':
(.text+0x358): multiple definition of `BIO_read'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x268): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_write':
(.text+0x488): multiple definition of `BIO_write'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x398): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_puts':
(.text+0x590): multiple definition of `BIO_puts'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x4a0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_gets':
(.text+0x6b0): multiple definition of `BIO_gets'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x5c0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_indent':
(.text+0x7c0): multiple definition of `BIO_indent'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x6d0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_ctrl':
(.text+0x838): multiple definition of `BIO_ctrl'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x748): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_int_ctrl':
(.text+0x938): multiple definition of `BIO_int_ctrl'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x848): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_ptr_ctrl':
(.text+0x988): multiple definition of `BIO_ptr_ctrl'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x898): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_callback_ctrl':
(.text+0x9e0): multiple definition of `BIO_callback_ctrl'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0x940): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_ctrl_pending':
(.text+0xad0): multiple definition of `BIO_ctrl_pending'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xa30): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_ctrl_wpending':
(.text+0xae0): multiple definition of `BIO_ctrl_wpending'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xa40): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_push':
(.text+0xaf0): multiple definition of `BIO_push'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xa50): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_pop':
(.text+0xb48): multiple definition of `BIO_pop'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xa60): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_get_retry_BIO':
(.text+0xbb0): multiple definition of `BIO_get_retry_BIO'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xac8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_get_retry_reason':
(.text+0xc10): multiple definition of `BIO_get_retry_reason'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xb00): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_find_type':
(.text+0xc20): multiple definition of `BIO_find_type'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xb08): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_next':
(.text+0xc60): multiple definition of `BIO_next'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xb48): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_free_all':
(.text+0xc80): multiple definition of `BIO_free_all'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xb60): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_dup_chain':
(.text+0xcc0): multiple definition of `BIO_dup_chain'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xba0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_copy_next_retry':
(.text+0xda8): multiple definition of `BIO_copy_next_retry'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xcb8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_set_ex_data':
(.text+0xde8): multiple definition of `BIO_set_ex_data'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xcf8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_get_ex_data':
(.text+0xdf0): multiple definition of `BIO_get_ex_data'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xd00): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_number_read':
(.text+0xdf8): multiple definition of `BIO_number_read'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xd08): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bio_lib.o): In function `BIO_number_written':
(.text+0xe10): multiple definition of `BIO_number_written'
/usr/lib/libcrypto.a(bio_lib.o): (.text+0xd20): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_set_params':
(.text+0x0): multiple definition of `BN_set_params'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x1e8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_get_params':
(.text+0x68): multiple definition of `BN_get_params'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x250): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_value_one':
(.text+0xd0): multiple definition of `BN_value_one'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x2b8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_num_bits_word':
(.text+0xe0): multiple definition of `BN_num_bits_word'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x2c8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_new':
(.text+0x1d8): multiple definition of `BN_new'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x4c8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_swap':
(.text+0x260): multiple definition of `BN_swap'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x750): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_clear':
(.text+0x2b8): multiple definition of `BN_clear'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x7a8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_get_word':
(.text+0x2f0): multiple definition of `BN_get_word'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x7e0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_ucmp':
(.text+0x320): multiple definition of `BN_ucmp'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xa88): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_cmp':
(.text+0x3a8): multiple definition of `BN_cmp'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xb10): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_is_bit_set':
(.text+0x488): multiple definition of `BN_is_bit_set'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xd58): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `bn_cmp_words':
(.text+0x4c0): multiple definition of `bn_cmp_words'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xe40): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `bn_cmp_part_words':
(.text+0x548): multiple definition of `bn_cmp_part_words'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xec8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_consttime_swap':
(.text+0x5d0): multiple definition of `BN_consttime_swap'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xf50): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_num_bits':
(.text+0x910): multiple definition of `BN_num_bits'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x3a0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_bn2bin':
(.text+0xa40): multiple definition of `BN_bn2bin'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xa10): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_set_negative':
(.text+0xb08): multiple definition of `BN_set_negative'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xe20): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_clear_free':
(.text+0xd30): multiple definition of `BN_clear_free'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x3d8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_free':
(.text+0xde0): multiple definition of `BN_free'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x458): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `bn_expand2':
(.text+0xe50): multiple definition of `bn_expand2'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x530): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_set_word':
(.text+0x1030): multiple definition of `BN_set_word'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x810): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_copy':
(.text+0x10d0): multiple definition of `BN_copy'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x548): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_dup':
(.text+0x11f8): multiple definition of `BN_dup'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x660): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_set_bit':
(.text+0x1288): multiple definition of `BN_set_bit'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xbf0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_bin2bn':
(.text+0x1388): multiple definition of `BN_bin2bn'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0x870): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_clear_bit':
(.text+0x1608): multiple definition of `BN_clear_bit'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xcd8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(bn_lib.o): In function `BN_mask_bits':
(.text+0x1678): multiple definition of `BN_mask_bits'
/usr/lib/libcrypto.a(bn_lib.o): (.text+0xd90): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(comp_lib.o): In function `COMP_CTX_new':
(.text+0x0): multiple definition of `COMP_CTX_new'
/usr/lib/libcrypto.a(comp_lib.o): (.text+0x0): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(comp_lib.o): In function `COMP_CTX_free':
(.text+0x90): multiple definition of `COMP_CTX_free'
/usr/lib/libcrypto.a(comp_lib.o): (.text+0x70): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(comp_lib.o): In function `COMP_compress_block':
(.text+0xd8): multiple definition of `COMP_compress_block'
/usr/lib/libcrypto.a(comp_lib.o): (.text+0xa8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(comp_lib.o): In function `COMP_expand_block':
(.text+0x128): multiple definition of `COMP_expand_block'
/usr/lib/libcrypto.a(comp_lib.o): (.text+0xf8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(cryptlib.o): In function `OPENSSL_showfatal':
(.text+0x0): multiple definition of `OPENSSL_showfatal'
/usr/lib/libcrypto.a(cryptlib.o): (.text+0x310): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(cryptlib.o): In function `OPENSSL_isservice':
(.text+0xc8): multiple definition of `OPENSSL_isservice'
/usr/lib/libcrypto.a(cryptlib.o): (.text+0x3d8): first defined here
/home/CrossCompileUser/libcrypto1.0.2f.a(cryptlib.o):(.bss+0x0): multiple definition of `OPENSSL_NONPIC_relocated'
/usr/lib/libcrypto.a(cryptlib.o):(.bss+0x48): first defined here
При компиляции LibraryA
Я изменил установленную версию в /usr/include/openssl, которая была необходима для LibraryB
, Конечно, если я удаляю 1 версию openssl, в это время будет много неопределенных символов. Как я могу смешивать символы с одинаковыми именами с ld, как это делал бы динамический компоновщик Linux, BSD или QNX во время выполнения? (libbsd также является библиотечной зависимостью, так как проект не использует ее).