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.

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

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

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


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.