Как вывести список экспортируемых функций в общую библиотеку в Ubuntu - PullRequest
33 голосов
/ 16 февраля 2010

Я только что создал общую библиотеку в Ubuntu, и когда я пытаюсь использовать эту функцию, приложение, которое загружает библиотеку, сообщает, что символ «xxx» не найден.

Я хочу проверить (т.е. список) функций, которые экспортирует моя библиотека, чтобы я мог продолжить изучение этой проблемы.

Соответствующие данные:

ОС: Ubuntu 9.10 компилятор: gcc 4.4.1 компоновщик: GNU ld 2.20

Ответы [ 3 ]

27 голосов
/ 16 февраля 2010

Попробуйте утилиту nm.

GNU nm перечисляет символы из объекта файлы objfile .... если нет объектных файлов перечислены в качестве аргументов, NM предполагает файл a.out. [ссылка]

22 голосов
/ 21 июля 2011
nm -D -C -g <library>

тоже хорошо работает.

2 голосов
/ 16 февраля 2010

Ваша общая библиотека находится в пути загрузки библиотеки или в пути поиска приложения во время выполнения? Похоже, динамический компоновщик не может найти вашу библиотеку. Попробуйте запустить ldd в своем приложении, чтобы увидеть, можно ли найти библиотеку во время выполнения, например, :

$ ldd /usr/bin/less
    linux-gate.so.1 =>  (0x0072a000)
    libncurses.so.5 => /lib/libncurses.so.5 (0x00c68000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x007c7000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00286000)
    /lib/ld-linux.so.2 (0x002a1000)

См. Справочную страницу ld.so (8) для получения дополнительной информации о путях поиска в библиотеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...