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

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
linuxbuild
источник
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
14

использование nm -a your.dylib

Он напечатает все символы, включая глобальные

Омкар Рамтеккар
источник
0

Используйте Mach-OView для просмотра всех символов в dylib

https://sourceforge.net/projects/machoview/

Сахил Доши
источник
Я был взволнован, узнав об этом графическом интерфейсе, но у меня произошел сбой после того, как я загрузил дилиб. Я использую macOS Mojave.
chrisdembia