Tryldd binary-exec
Beispiel:
~$ ldd /bin/bash
linux-gate.so.1 => (0x00606000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00943000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c5d000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x003e9000)
/lib/ld-linux.so.2 (0x00a41000)
Um zu finden, was es direkt braucht:
readelf -d APP | grep NEEDED
ldd
wie an anderer Stelle erwähnt, werden alle direkten und indirekten Bibliotheken angezeigt - alles, was zur Laufzeit benötigt wird. Dies ist möglicherweise keine vollständige Liste, da Sie Dinge mit dlopen() dynamisch öffnen können, aber dies sollte in 99% der Fälle funktionieren.
ld und libtool werden zum Zeitpunkt des Kompilierens/Linkens verwendet. Sie sind nicht mehr nützlich, sobald Sie eine App haben.
BEARBEITEN Ich kann durch spätere Antworten sehen, dass Sie nach OSX gefragt haben, aber ich möchte meine Antwort zu Linux-Tools ergänzen:
Eines habe ich vor einiger Zeit vergessen zu erwähnen; Sie haben nach Versionen gefragt. Weder ldd
noch readelf
wird die Frage "welche Version" beantworten. Sie werden Ihnen den Dateinamen der Bibliothek mitteilen, nach der Sie suchen, und die Namenskonvention enthält möglicherweise einige Versionsinformationen, aber nichts erzwingt dies. Symbole können versioniert sein, und Sie müssten mit nm
viel über eine noch niedrigere Ebene sagen um diese zu sehen,
Eine andere Möglichkeit wäre die Verwendung von objdump.
objdump -x "binär" | grep ERFORDERLICH
Dies zeigt alle benötigten Abhängigkeiten nur für diese Binärdatei. Sehr nützlich.