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

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

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

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

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

33
задан Stick it to THE MAN 16 February 2010 в 16:53
поделиться

2 ответа

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

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

27
ответ дан 27 November 2019 в 18:25
поделиться

Да, std:: vector < T >:: push _ back () создает копию аргумента и сохраняет ее в векторе. Если требуется сохранить указатели на объекты в векторе, создайте std:: vector < что угодно * > вместо std:: vector < что угодно > .

Однако необходимо убедиться, что объекты, на которые ссылаются указатели, остаются действительными, в то время как вектор содержит ссылку на них (интеллектуальные указатели, использующие идиом RII, решают проблему).

-121--677537-

SQL Server предоставляет несколько хороших средств, позволяющих определить, какие индексы действительно используются. В этой статье, http://www.mssqltips.com/tip.asp?tip=1239 , приводятся некоторые запросы, которые позволяют лучше понять, сколько используется индекс, а не сколько он обновляется.

-121--712619-

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

2
ответ дан 27 November 2019 в 18:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: