我正在尝试向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
答案 0 :(得分:1)
事实证明,有一个libsoup/libsoup-2.4.sym
文件列出了存储库中的所有导出符号。将新函数名称添加到该文件后,我不得不rm libsoup/libsoup-2.4.la
再次运行make
,这导致我的新函数可用于我的测试程序。