Як надрукувати список символів, експортованих з динамічної бібліотеки


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параметр є малі.
Ларикс Декідуа

4
man 1 нм є автономним і продовжить працювати при зміні командного рядка: p
MK.

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

59

Використовуйте отоол :

otool -TV your.dylib

АБО

nm -g your.dylib

4
На нових macOS, otool -T покаже otool: -T functionality obsoleteвикористання objdump -t
joseph.smeng

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


0

Використовуйте Mach-OView для перегляду всіх символів у dylib

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


Я був схвильований, що дізнався про цей графічний інтерфейс, але він зазнав аварії для мене після завантаження дилібу. Я використовую macOS Mojave.
chrisdembia
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.