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


121

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

Je suis capable de charger le fichier dylib, mais quand j'appelle dlsym pour obtenir le pointeur de fonction, il renvoie 0 et dlerror indique que le symbole est introuvable.

Je me demande donc s'il existe un moyen simple de lister les symboles exportés à partir d'un fichier dylib. Toutes les idées seraient géniales.

Réponses:


152

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
Sous OS X Leopard (10.5, ouais, je sais ...) vous devriez utiliser nm -gu, c'est à dire que l' -uoption est en minuscules.
Laryx Decidua

4
man 1 nm est autonome et continuera de fonctionner lorsque la ligne de commande change: p
MK.

9
@MK. man 1 nmliste de nombreuses choses que l'on peut faire avec nm. Encore une fois, c'est une ressource externe que l'on peut lire pour découvrir une solution, mais pas une solution elle-même au «moyen simple de lister les symboles exportés depuis un fichier dylib» . « nm -gU ….dylib» Est, cependant.
Slipp D.Thompson

59

Utilisez otool :

otool -TV your.dylib

OU

nm -g your.dylib

4
Sur le nouveau macOS, otool -T affichera otool: -T functionality obsoleteuse objdump -t
joseph.smeng

Bien qu'il soit vrai que les otool -Trapports functionality obsoletedans le plus récent OS X, il est également vrai que (pour les bibliothèques dynamiques) objdump -trapporteraThe file was not recognized as a valid object file.
TML


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.