Je souhaite afficher les fonctions exportées d'une bibliothèque partagée sous Linux.
Quelle commande me permet de faire cela?
(Sous Windows, j'utilise le programme dépend)
Je souhaite afficher les fonctions exportées d'une bibliothèque partagée sous Linux.
Quelle commande me permet de faire cela?
(Sous Windows, j'utilise le programme dépend)
Réponses:
Ce dont vous avez besoin est nmet son -Doption:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
Les sumbols exportés sont indiqués par un T. Les symboles requis qui doivent être chargés à partir d'autres objets partagés ont unU . Notez que la table des symboles n'inclut pas uniquement des fonctions, mais également des variables exportées.
Consultez la nm page de manuel pour plus d'informations.
nmsans le -Ddrapeau.
objdump -T *.so peut aussi faire le travail
Sur un MAC, vous devez utiliser nm *.o | c++filt, car il n'y a pas d' -Coption dans nm.
Parmi les autres outils déjà mentionnés, vous pouvez également utiliser readelf( manuel ). Il est similaire à objdumpmais va plus dans les détails. Voir ceci pour l'explication de la différence.
$ readelf -sW /lib/liblzma.so.5 |head -n10
Symbol table '.dynsym' contains 128 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_unlock@GLIBC_2.0 (4)
2: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_destroy@GLIBC_2.0 (4)
3: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable
4: 00000000 0 FUNC GLOBAL DEFAULT UND memmove@GLIBC_2.0 (5)
5: 00000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.0 (5)
6: 00000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.0 (5)