it-swarm.com.de

Finden Sie Bibliotheken, mit denen eine Binärdatei verknüpft wurde

Ich weiß, dass es einen Befehl gibt, der mir die Bibliotheken und die entsprechenden Versionen auflistet, mit denen eine Software verknüpft wurde.

Irgendwas mit ld oder libtool?

Aber ich kann mich einfach nicht erinnern. Ich habe einige Zeit mit Google verbracht, aber nichts Nützliches gefunden.

Update
ldd <binary> würde unter Linux helfen ( von @ Ernelli ), während ich feststellte, dass otool -L <binary> unter MacOS X etwas Ähnliches macht.

39
er4z0r

Versuchen Sie ldd 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)
39
Ernelli

So finden Sie direkt, was es braucht:

readelf -d APP | grep NEEDED

ldd zeigt, wie an anderer Stelle erwähnt, alle direkten und indirekten Bibliotheken an - alles, was es zur Laufzeit benötigt. Dies ist möglicherweise keine vollständige Liste, da Sie möglicherweise Dinge mit dlopen () dynamisch öffnen, dies sollte jedoch in 99% der Fälle funktionieren.

ld und libtool werden beim Kompilieren/Verknüpfen verwendet. Sie sind nicht nützlich, wenn Sie eine App haben.

EDIT Ich kann anhand späterer Antworten feststellen, dass Sie nach OSX gefragt haben, aber ich möchte meiner Antwort auf Linux-Tools hinzufügen:

Eines habe ich vor einiger Zeit vergessen zu erwähnen; Sie fragten nach Versionen. Weder ldd noch readelf beantworten die Frage "welche Version". 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 zu viel auf einer niedrigeren Ebene tun, um diese zu sehen.

14
Rich Homolka

Ein anderer Weg wäre, objdump zu benutzen.

objdump -x "binary" | grep BRAUCHTE

Dies zeigt alle benötigten Abhängigkeiten nur für diese Binärdatei an. Sehr hilfreich.

8
Pranav