Sur un MAC, vous devez utiliser nm *.o | c++filt
, car il n'y a pas de -C
option dans nm
.
Ce dont vous avez besoin est nm
et son -D
choix :
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
Les symboles exportés sont indiqués par un T
. Les symboles requis qui doivent être chargés à partir d'autres objets partagés ont un U
. Notez que la table des symboles n'inclut pas seulement les fonctions, mais également les variables exportées.
Voir le nm
page de manuel pour plus d'informations.
Parmi les autres outils déjà mentionnés, vous pouvez également utiliser readelf
(manuel). Il est similaire à objdump
mais va plus dans le détail. 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 [email protected]_2.0 (4)
2: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.0 (4)
3: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable
4: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.0 (5)
5: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.0 (5)
6: 00000000 0 FUNC GLOBAL DEFAULT UND [email protected]_2.0 (5)
objdump -T *.so
peut aussi faire le travail