Ответ 1
Попробуйте утилиту nm.
GNU nm перечисляет символы из объекта файлы objfile.... Если никаких объектных файлов перечислены в качестве аргументов, nm предполагает файл a.out. [ссылка]
Я только что создал общую библиотеку Ubuntu, и когда я пытаюсь использовать эту функцию, приложение, загружающее библиотеку, сообщает, что символ "xxx" не найден.
Я хочу проверить (т.е. список) функции, которые экспортируются моей библиотекой, чтобы я мог исследовать эту проблему дальше.
Релевантные детали:
ОС: Ubuntu 9.10 компилятор: gcc 4.4.1 linker: GNU ld 2.20
Попробуйте утилиту nm.
GNU nm перечисляет символы из объекта файлы objfile.... Если никаких объектных файлов перечислены в качестве аргументов, nm предполагает файл a.out. [ссылка]
nm -D -C -g <library>
тоже хорошо работает.
Является ли ваша общая библиотека в пути загрузки библиотеки или в пути поиска во время выполнения приложения? Похоже, что динамический компоновщик не может найти вашу библиотеку. Попробуйте запустить 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 странице.