Подтвердить что ты не робот

Как просмотреть экспортированные функции в общей библиотеке на Ubuntu

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

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

Релевантные детали:

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

4b9b3361

Ответ 1

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

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

Ответ 2

nm -D -C -g <library>

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

Ответ 3

Является ли ваша общая библиотека в пути загрузки библиотеки или в пути поиска во время выполнения приложения? Похоже, что динамический компоновщик не может найти вашу библиотеку. Попробуйте запустить 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) man странице.