Я создал .so в Ubuntu, который требует libssl.so
(он хочет libssl.so.1.0.0
).
Текущая установленная версия libssl.so - libssl.so.1.0.2k
, но есть ссылка libssl.so.1.0.0
на этот файл, поэтому я предполагаю, что Ubuntu обрабатывает версии исправлений, просто заменяя их .0
.
Если я пытаюсь использовать этот .so на RHEL7, он не может его найти. В моей системе RHEL7 также установлена libssl.so.1.0.2k
, но ссылка на нее называется libssl.so.10
. Я предполагаю, что RHEL обрабатывает версии патчей, отбрасывая их и объединяя старшую и младшую версии.
Я попытался решить, создав ссылку с именем libssl.so.1.0.0
на libssl.so.1.0.2k
. Сделал то же самое для libcrypto.so.1.0.0
до libcrypto.so.1.0.2k
. Теперь я получаю что-то странное:
% ldd libironoxide_java.so
./libironoxide_java.so: /lib64/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./libironoxide_java.so)
./libironoxide_java.so: /lib64/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./libironoxide_java.so)
./libironoxide_java.so: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./libironoxide_java.so)
linux-vdso.so.1 => (0x00007ffcfda70000)
libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007fc82d0d2000)
libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007fc82cc70000)
...
Но обнаруженное libssl.so.1.0.0
НЕ требует OPENSSL_1.0.0
% objdump -p libssl.so.1.0.0 | grep SSL
3 0x00 0x066a2b21 OPENSSL_1.0.1
4 0x00 0x02b21533 OPENSSL_1.0.1_EC
5 0x00 0x066a2b22 OPENSSL_1.0.2
OPENSSL_1.0.1
0x02b21533 0x00 08 OPENSSL_1.0.1_EC
Я не могу найти другие экземпляры libssl.so.1.0.0
в системе, которые должны сбивать с толку.
Есть идеи, что здесь происходит? И какие-либо предложения по созданию .so
, который будет работать как на Ubuntu, так и на RHEL7?