132 votes

Comment imprimer une liste de symboles exportés d'une bibliothèque dynamique ?

J'ai donc essayé de faire fonctionner des bibliothèques dynamiques dans mon projet XCode sous Mac OS X. Jusqu'à présent, pas de joie.

Je suis capable de charger le fichier dylib, mais lorsque j'appelle dlsym pour obtenir le pointeur de fonction, il renvoie 0 et dlerror dit que le symbole n'a pas été trouvé.

Je me demande donc s'il existe un moyen simple de dresser la liste des symboles exportés depuis un fichier dylib. Toute idée serait la bienvenue.

169voto

MK. Points 11889

Homme 1 nm

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

Par exemple :

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

2 votes

Sous OS X Leopard (10.5, oui, je sais...) vous devez utiliser nm -gu c'est-à-dire le -u est en minuscules.

4 votes

Man 1 nm est autonome et continuera à fonctionner si la ligne de commande change :p

10 votes

@MK. man 1 nm énumère un grand nombre de choses que l'on peut faire avec nm. Là encore, il s'agit d'une ressource externe que l'on peut lire pour découvrir une solution, mais pas d'une solution en soi à la question posée. "un moyen simple de lister les symboles qui sont exportés depuis un fichier dylib" . " nm -gU ….dylib " est, cependant.

62voto

aponomarenko Points 6966

Utilisez otool :

otool -TV your.dylib

OU

nm -g your.dylib

4 votes

Sur le nouveau macOS, otool -T montrera otool: -T functionality obsolete utiliser objdump -t

0 votes

S'il est vrai que otool -T rapports functionality obsolete dans le nouvel OS X, il est également vrai que (pour les bibliothèques dynamiques) objdump -t fera un rapport The file was not recognized as a valid object file.

16voto

Omkar Ramtekkar Points 31

Utilisez nm -a your.dylib

Il imprimera tous les symboles, y compris les globaux

1voto

user7610 Points 820
readelf -Ws your.so

peut être utilisé sous Linux

0voto

Sahil Doshi Points 11

Utilisez Mach-OView pour visualiser tous les symboles de la dylib.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X