сообщает Readelf, что libutil.so.1 нужна утилита SSH:отчетов readelf так файл в случае необходимости, но ни одна из функций (или другие символы) не используются из него
$readelf -s /usr/bin/ssh | grep libutil
0x0000000000000001 (NEEDED) Shared library: [libutil.so.1]
Как нм говорит, libutil. so.1 имеет только 6 внешних символов:
$nm -D /lib64/libutil.so.1 | grep "T "
000000331e0015a0 T forkpty
000000331e000fa0 T login
000000331e0010f0 T login_tty
000000331e001190 T logout
000000331e0012e0 T logwtmp
000000331e0013d0 T openpty
Но эти символы не упоминаться от SSH:
$nm -D /usr/bin/ssh | grep forkpty
$nm -D /usr/bin/ssh | grep login
$nm -D /usr/bin/ssh | grep login_tty
$nm -D /usr/bin/ssh | grep logout
$nm -D /usr/bin/ssh | grep logwtmp
$nm -D /usr/bin/ssh | grep openpty
(grep not showing any matches)
Что происходит? Почему библиотека ссылается как НЕОБХОДИМО, но символы из нее не используются? Это не единственный пример. Я встретил много таких «пустых» ссылок, анализируя зависимости других исполняемых файлов.
В чем дистрибутив вы создали это приложение? – yugr
Distro был Red Hat 6.6, но я не думаю, что это имеет значение. – spacistor
, это значит, что на современных дистрибутивах '-as-needed' включен по умолчанию, поэтому вам нужно будет использовать' -no-as-needed', чтобы исправить вашу проблему. Redhat 6 кажется здравым, хотя (только что проверено). – yugr