Ich weiß, dass es einen Befehl gibt, der mir die Bibliotheken und die entsprechenden Versionen auflistet, mit denen eine Software verknüpft wurde.
Etwas mit ld oder libtool?
Aber ich kann mich einfach nicht erinnern. Ich habe einige Zeit mit Google verbracht, aber nichts Nützliches gefunden.
Ein Update
ldd <binary>
unter Linux ( von @ Ernelli ) würde helfen, während ich herausfand, dass otool -L <binary>
dies unter MacOS X etwas Ähnliches bewirkt.
linux
macos
shared-libraries
er4z0r
quelle
quelle
Antworten:
Probieren Sie ldd binary-exec aus
Beispiel:
quelle
So finden Sie direkt, was es braucht:
ldd
Wie an anderer Stelle erwähnt, werden alle direkten und indirekten Bibliotheken angezeigt - 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.
BEARBEITEN Ich kann anhand späterer Antworten sehen, die Sie zu OSX gefragt haben, aber ich möchte meiner Antwort zu Linux-Tools hinzufügen:
Eines habe ich vor einiger Zeit vergessen zu erwähnen; Sie fragten nach Versionen. Weder wird
ldd
nochreadelf
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 zu viel über noch niedrigere Ebene mitnm
, um diese zu sehen,quelle
Ein anderer Weg wäre, objdump zu verwenden.
Dies zeigt alle benötigten Abhängigkeiten nur für diese Binärdatei an. Sehr hilfreich.
quelle