Відповіді:
Якщо у вас є виконуваний файл і ви хочете побачити, де він збирає бібліотеки, запустіть
ldd /path/to/executable
Це враховує бібліотеки на шляху пошуку за замовчуванням, а також бібліотеки у цьому виконуваному файлі, якщо вони є.
В Linux шляхи до системних бібліотек кешуються для ефективності. /sbin/ldconfig -p
відображає вміст кешу (він зберігається в /etc/ld.so.cache
). Ось сценарій, який показує розташування бібліотек:
#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
set -f
IFS=:
for d in $LD_LIBRARY_PATH; do
if [ -e "$d/$1" ]; then echo "$1"; fi
done
fi
/sbin/ldconfig -p |
awk -v needle="$1" '$1 == needle {sub(/.* => /, ""); print}'
Якщо ваші бібліотеки належним чином кешовані, ви можете знайти їх за допомогою:
ldconfig -p|grep "yourlibrary"
Якщо ви шукаєте бібліотеку, що постачається з вашим розповсюдженням, ви можете використовувати засоби розповсюдження для пошуку файлів у пакетах.
Це також виведе rpms, які не встановлені, але є частиною активних джерел установки.
Якщо ви шукаєте утиліту, яка буде працювати як прапор gcc
' -lLIBNAME
, який шукає файл з назвою, libLIBNAME.so
ви, ймовірно, можете скористатися невеликим сценарієм, який робить щось подібне:
#!/bin/sh
ldpath="${LD_LIBRARY_PATH:-$(</etc/ld.so.conf)}"
notfound=1
for libdir in ${ldpath//:/ }; do
(test -f "$libdir/lib${1}.so" && echo "$_") && notfound=0
done
[ "$notfound" -eq 0 ]