无法链接新的API函数

时间:2013-12-23 10:34:16

标签: c glib dynamic-linking

我正在尝试向libsoup添加一个新函数。我已经把libsoup本身用我的新函数正确编译了;我还将函数原型添加到相关的头文件中。但是,当尝试针对本地so编译测试程序时,链接器会抱怨我的新函数的引用是未定义的。使用objdump -T进行检查,我可以看到库中存在该函数,但在使用nm -C -D进行检查时却看不到。即使我使用objcopy全局化符号,nm仍然无法看到它。

我也已尝试添加__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 个答案:

答案 0 :(得分:1)

事实证明,有一个libsoup/libsoup-2.4.sym文件列出了存储库中的所有导出符号。将新函数名称添加到该文件后,我不得不rm libsoup/libsoup-2.4.la再次运行make,这导致我的新函数可用于我的测试程序。