So drucken Sie eine Liste von Symbolen, die aus einer dynamischen Bibliothek exportiert wurden

120

Daher habe ich versucht, dynamische Bibliotheken in meinem XCode-Projekt unter Mac OS X zum Laufen zu bringen. Bisher keine Freude.

Ich kann die Dylib-Datei laden, aber wenn ich dlsym aufrufe, um den Funktionszeiger abzurufen, wird 0 zurückgegeben und dlerror sagt, dass das Symbol nicht gefunden wurde.

Ich frage mich also, ob es eine einfache Möglichkeit gibt, die Symbole aufzulisten, die aus einer Dylib-Datei exportiert werden. Irgendwelche Ideen wären toll.

Gerald
quelle

Antworten:

152

Mann 1 nm

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

Beispielsweise:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib
MK.
quelle
2
Unter OS X Leopard (10.5, ja, ich weiß ...) sollten Sie verwenden nm -gu, dh die -uOption ist Kleinbuchstaben.
Laryx Decidua
4
man 1 nm ist in sich geschlossen und arbeitet weiter, wenn sich die Befehlszeile ändert: p
MK.
9
@MK. man 1 nmlistet viele Dinge auf, die man mit nm machen kann. Auch hier handelt es sich um eine externe Ressource, die durchgelesen werden kann, um eine Lösung zu finden, jedoch nicht um eine Lösung für die angeforderte „einfache Methode zum Auflisten der Symbole, die aus einer Dylib-Datei exportiert werden“ . " nm -gU ….dylib" Ist jedoch.
Slipp D. Thompson
58

Verwenden Sie otool :

otool -TV your.dylib

ODER

nm -g your.dylib
Linuxbuild
quelle
4
Unter neuen MacOS zeigt otool -T die otool: -T functionality obsoleteVerwendung von objdump -t
joseph.smeng am
Während es wahr ist, dass otool -TBerichte functionality obsoletein neuerem OS X, ist es auch wahr, dass (für dynamische Bibliotheken) objdump -tBerichtThe file was not recognized as a valid object file.
TML
14

Verwenden nm -a your.dylib

Es werden alle Symbole einschließlich Globals gedruckt

Omkar Ramtekkar
quelle
0

Verwenden Sie Mach-OView, um alle Symbole in Dylib anzuzeigen

https://sourceforge.net/projects/machoview/

Sahil Doshi
quelle
Ich war aufgeregt, von dieser GUI erfahren zu haben, aber sie stürzte für mich ab, nachdem ich eine Dylib geladen hatte. Ich benutze macOS Mojave.
Chrisdembia