2013-12-23 2 views
1

Я пытаюсь добавить новую функцию в libsoup. Я сам создал libsoup для правильной компиляции с моей новой функцией; Я также добавил прототип функции в соответствующий файл заголовка. Однако при попытке скомпилировать тестовую программу с локальным so, компоновщик жалуется, что ссылка на мою новую функцию не определена. Проверка с помощью objdump -T, я вижу, что функция существует в библиотеке, но не при проверке с nm -C -D. Даже если я глобализую символ, используя objcopy, nm все еще не может его увидеть.Невозможно связать с новой функцией API

Я также уже пытался добавить __attribute__((visibility("default"))), но, похоже, это не помогает.

Я использую этот компилятор вызов для моей тестовой программы:

gcc -o test -I. -I $prefix/include/glib-2.0/ -I $prefix/lib/glib-2.0/include/ -L libsoup/.libs/ test.c -lsoup-2.4 
+1

Не могли бы вы дать нам точные параметры, которые вы используете для связи и компиляции библиотеки? – askmish

+0

Я добавил свой вызов для компилятора, спасибо. – djc

+0

Устранила ли вы проблему? Если да, ответьте на вопрос и закройте этот вопрос. – askmish

ответ

1

Оказалось, что есть libsoup/libsoup-2.4.sym файл со списком всех экспортируемых символов в хранилище. После добавления моего нового имени функции в этот файл мне пришлось rm libsoup/libsoup-2.4.la и снова запустить make, что привело к тому, что моя новая функция была доступна для использования в моей тестовой программе.

Смежные вопросы