Відповіді:
Що вам потрібно - це nm
і його -D
варіант:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
Експортовані суми позначені символом a T
. Обов’язкові символи, які повинні бути завантажені з інших спільних об'єктів, мають a U
. Зауважте, що таблиця символів не включає лише функції, але й експортовані змінні.
Додаткову інформацію див nm
. На сторінці керівництва .
nm
без -D
прапора.
objdump -T *.so
може також виконати роботу
На MAC вам потрібно використовувати nm *.o | c++filt
, оскільки в ньому немає -C
опції nm
.
Серед інших уже згаданих інструментів можна використовувати також readelf
( посібник ). Це схоже, objdump
але детальніше йде. Дивіться це для пояснення різниці.
$ 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)