Как распечатать список символов, экспортированных из динамической библиотеки


121

Итак, я пытался заставить динамические библиотеки работать в моем проекте XCode под Mac OS X. Пока без радости.

Я могу загрузить файл dylib, но когда я вызываю dlsym для получения указателя функции, он возвращает 0, а dlerror сообщает, что символ не найден.

Поэтому мне интересно, есть ли простой способ перечислить символы, экспортируемые из файла dylib. Любые идеи были бы отличными.

Ответы:


152

человек 1 нм

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

Например:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib

2
Под OS X Leopard (10.5, да, я знаю ...) вы должны использовать nm -gu, то есть -uопция в нижнем регистре.
Laryx Decidua

4
man 1 nm автономен и продолжит работу при изменении командной строки: p
MK.

9
@MK. man 1 nmперечисляет множество вещей, которые можно делать с помощью nm. Опять же, это внешний ресурс, который можно прочитать, чтобы найти решение, но не само решение запрошенного «простого способа перечислить символы, которые экспортируются из файла dylib» . « nm -gU ….dylib», Однако.
Слипп Д. Томпсон

59

Используйте otool :

otool -TV your.dylib

ИЛИ

nm -g your.dylib

4
В новой macOS otool -T покажет otool: -T functionality obsoleteиспользование objdump -t
joseph.smeng

Хотя верно, что otool -Tотчеты functionality obsoleteв более новой OS X, верно и то, что (для динамических библиотек) objdump -tбудут сообщатьThe file was not recognized as a valid object file.
TML


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.