En una MAC, debe usar nm *.o | c++filt
, ya que no hay -C
opción en nm
.
Lo que necesitas es nm
y su -D
opción:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
Los símbolos exportados se indican con un T
. Los símbolos obligatorios que deben cargarse desde otros objetos compartidos tienen un U
. Tenga en cuenta que la tabla de símbolos no incluye solo funciones, sino también variables exportadas.
Ver el nm
página del manual para obtener más información.
Entre otras herramientas ya mencionadas puedes usar también readelf
(manual). Es similar a objdump
pero va más en detalle. Vea esto para la explicación de la diferencia.
$ 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
también puede hacer el trabajo