0

我已经编译了共享库(pppd 插件),没有错误或警告,但是当 pppd 尝试加载此插件时,它会失败并显示“未定义符号 g_string_sized_new”消息。

插件源可以在这里找到:https ://raw.github.com/openshine/ModemManager/master/test/mm-test-pppd-plugin.c

要编译共享库,我使用以下命令:

gcc -fPIC -c ./mm-test-pppd-plugin.c -o mm-test-pppd-plugin.o `pkg-config --cflags --libs glib-2.0`
gcc -shared -o ./mm-test-pppd-plugin.so ./mm-test-pppd-plugin.o

我发现这个 g_string_sized_new 应该在 GLib 中。所以据我了解,它应该在系统范围内可用?

操作系统:Ubuntu 13.04

有什么想法可能是错的吗?提前致谢!

4

1 回答 1

0

编译不是链接,链接不是编译。

在第一行,您正在调用编译器,以便将您的 C 源文本编译为目标代码在这里提供--libs标志pkg-config是完全多余的,纯编译器对库无能为力。

但是,在第二行,您尝试使用链接器将生成的目标文件链接到正确的可执行文件中但现在您缺少命令行pkg-config --libs末尾的 - 链接器需要知道要链接的库命令它能够解析符号。

长话短说,读到这里。

于 2013-05-24T06:33:14.623 回答