J'ai un objet partagé (dll). Comment puis-je savoir quels sont les symboles qui en sont exportés ?
Dans GNU/Linux, il n'existe pas d'utilitaire "dumpbin". Et la question est étiquetée comme suit : linux.
J'ai un objet partagé (dll). Comment puis-je savoir quels sont les symboles qui en sont exportés ?
Avez-vous un "objet partagé" (généralement une bibliothèque partagée sur AIX), une bibliothèque partagée UNIX ou une DLL Windows ? Ce sont toutes des choses différentes, et votre question les confond toutes :-(
dump -Tv /path/to/foo.o
.readelf -Ws /path/to/libfoo.so
ou (si vous avez GNU nm) nm -D /path/to/libfoo.so
.dumpbin /EXPORTS foo.dll
.
Dans GNU/Linux, il n'existe pas d'utilitaire "dumpbin". Et la question est étiquetée comme suit : linux.
Très utile, il est bon d'avoir une telle vue d'ensemble. nm
fonctionne également sous MacOSX, sauf que le -D
option. Ou brew install binutils
et utiliser la version GNU via gnm
. Pour GNU nm
, --demangle
est également utile. Voir aussi gobjdump
.
En fait, vous pouvez très bien travailler à la fois avec des bibliothèques partagées, des dlls et des fichiers objets à partir d'un seul utilitaire, voir cette réponse .
Comme cela a été joliment expliqué dans ce Réponse SO on l'utiliserait comme ça... objdump -TC /path/to/libfoo.so
.
Sous *nix, vérifiez nm. Sous Windows, utilisez le programme Dépendance Walker
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.
0 votes
fr.wikipedia.org/wiki/Nm_%28Unix%29
1 votes
Tous les symboles de l'objet sont exportés - même les fonctions "internes". Il suffit de les déclarer au compilateur pour qu'ils soient prêts pour l'éditeur de liens. Ceci est généralement fait avec un fichier d'en-tête, comme le dit Ryan Fox ci-dessous.
10 votes
Chris Lutz se trompe : tous les symboles ne sont pas exportés depuis les fichiers d'objets relocalisables, et encore moins depuis les bibliothèques partagées.
0 votes
Cela répond-il à votre question ? Comment lister les symboles dans un fichier .so ?