Ich suche nach einem Dienstprogramm, das sich genauso verhält wie which
, sondern gemeinsam genutzte Bibliotheken (*.so) in den Verzeichnissen zu suchen, die in $LD_LIBRARY_PATH?
Akzeptierte Antwort:
Wenn Sie eine ausführbare Datei haben und sehen möchten, wo sie Bibliotheken aufnimmt, führen Sie
ausldd /path/to/executable
Dies berücksichtigt Bibliotheken im Standardsuchpfad sowie Bibliotheken im rpath dieser ausführbaren Datei, sofern vorhanden.
Unter Linux werden Pfade zu Systembibliotheken aus Effizienzgründen zwischengespeichert. /sbin/ldconfig -p
zeigt den Inhalt des Caches an (er ist in /etc/ld.so.cache
gespeichert ). Hier ist ein Skript, das den Standort bzw. die Standorte einer Bibliothek anzeigt:
#!/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}'