как увидеть полные данные пути «ldd», а не файл не найден?

При запуске команды ldd, когда путь не существует, я получаю «файл не найден» вместо пути. bash-3.2$ ldd curl libcurl.so.4 => /usr/local/lib/libcurl.so.4 libldap.so.5 => /usr/lib/libldap.so.5 librt.so.1 => / lib/librt.so.1 libssl.so.1.0.0 => (файл не найден) libcrypto.so.1.0.0 => (файл не найден)

Есть ли возможность увидеть, какой файл не найден? полный путь?


ldd
person 15412s    schedule 29.05.2014    source источник


Ответы (1)


ldd ищет в путях поиска библиотек, упомянутых в /etc/ld.so.conf. Или он может использовать переменную среды LD_LIBRARY_PATH. Насколько я вижу, он выглядит по крайней мере в /usr/local/lib, /usr/lib и /lib, который используется по умолчанию в большинстве систем. Не удается найти libssl.so.1.0.0 в этих трех местах. Вот почему вы получаете сообщение «файл не найден».

Одной из причин может быть то, что у вас не установлен libssl.so.1.0.0. Может какая другая версия.

Другая причина может заключаться в том, что он установлен где-то еще. Приложение, которому необходимо загрузить разделяемую библиотеку, либо жестко запрограммировало этот путь, либо использует LD_LIBRARY_PATH.

в любом случае, чтобы ответить на ваш вопрос: полный путь к libssl.so.1.0.0 не может быть найден ldd, поэтому вы получаете сообщение об ошибке.

чтобы найти его, вы должны искать его вручную. один простой способ был бы

find / -ls | grep libssl.so

или лучше (если вы хотите, чтобы поиск выполнялся только на вашем системном диске)

find / -mount -ls | grep libssl.so

что может привести к тому, что множество версий будет установлено в нескольких местах.

person wwwutz    schedule 29.05.2014
comment
Как только вы нашли версию в другом месте, вы можете добавить символическую ссылку в каталоге /usr/local/lib на эту одну внешнюю библиотеку (но будьте осторожны, мне просто нужно было обновить мой /etc/ld.so.conf, который содержал ссылку на usr/Local/lib (смотрите в верхнем регистре)). - person Dominique; 17.03.2016