2010-12-22 3 views
93

Also habe ich versucht, dynamische Bibliotheken in meinem XCode-Projekt unter Mac OS X zu arbeiten. Bis jetzt keine Freude.So drucken Sie eine Liste von Symbolen aus einer dynamischen Bibliothek

Ich bin in der Lage, die Dylib-Datei zu laden, aber wenn ich dlsym aufrufen, um den Funktionszeiger zu erhalten, gibt es 0 zurück und dlerror sagt Symbol nicht gefunden.

So frage ich mich, ob es eine einfache Möglichkeit gibt, die Symbole aufzulisten, die aus einer Dylib-Datei exportiert werden. Irgendwelche Ideen wären großartig.

Antwort

106

man 1 nm

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/nm.1.html

Zum Beispiel:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib 
+0

Unter OS X Leopard (10.5, ja, ich Wissen Sie ...) Sie sollten 'nm -gu' verwenden, dh die' -u' Option ist kleingeschrieben. –

+3

man 1 nm ist in sich abgeschlossen und funktioniert weiter, wenn die Befehlszeile geändert wird: p –

+4

@MK. 'man 1 nm' listet viele Dinge auf, die man mit nm machen kann. Wiederum handelt es sich um eine externe Ressource, die man durchlesen kann, um eine Lösung zu finden, aber nicht eine Lösung für die angeforderte _ "eine einfache Möglichkeit, die Symbole aufzulisten, die aus einer dylib-Datei exportiert werden" _. "' Nm -gU ... .dylib' "ist jedoch. –

49

Verwenden otool:

otool -TV your.dylib 

OR

nm -g your.dylib 
+0

Auf dem neuen macOS zeigt otool -T an, dass "otool: -T Funktionalität veraltet" objdump -t –

+0

Es ist wahr, dass "otool -T" im neueren OS X "Funktionalität veraltet" meldet, aber auch (für dynamische Bibliotheken) 'objdump -t' meldet' Die Datei wurde nicht als gültige Objektdatei erkannt.' – TML

11

Verwenden nm -a your.dylib

Es alle Symbole einschließlich Globals druckt

Verwandte Themen