Связывание с двумя разными версиями библиотеки - PullRequest
0 голосов
/ 14 февраля 2019

как возможно, что openssl связан с другой версией libcrypto по отношению к curl?Где это определено в файле формата ELF?

ldd openssl дает мне

libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f5d78c49000)

ldd curl дает мне

libcrypto.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 (0x00007fd38571c000)

readelf --dynamic /usr/bin/curl

Dynamic section at offset 0x2fab0 contains 27 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libcurl.so.4]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

Тамнет в списке libcrypto.so.1.1.Почему?

1 Ответ

0 голосов
/ 14 февраля 2019

Я думаю, вы ищете NEEDED записи в динамическом разделе.SONAME разделяемой библиотеки записывается во время соединения.

Мои результаты получены из Fedora 29 x86_64, поэтому на этой платформе оба пакета были собраны для одной и той же разделяемой библиотеки.Ваш вывод показывает, что openssl из пакета OpenSSL 1.1.x, но curl был построен на OpenSSL 1.0.2.

$ readelf --dynamic /usr/bin/openssl | fgrep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libssl.so.1.1]
 0x0000000000000001 (NEEDED)             Shared library: [libcrypto.so.1.1]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
$ readelf --dynamic /usr/bin/curl | fgrep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libcurl.so.4]
 0x0000000000000001 (NEEDED)             Shared library: [libmetalink.so.3]
 0x0000000000000001 (NEEDED)             Shared library: [libssl.so.1.1]
 0x0000000000000001 (NEEDED)             Shared library: [libcrypto.so.1.1]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
...