无法加载pppd共享库 - 未定义符号g_string_sized_new

时间:2013-05-24 06:21:38

标签: c shared-libraries pppd

我编译了没有错误或警告的共享库(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

任何想法都可能出错?提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

在第一行,您将调用编译器,以便编译您的C源文本到目标代码。向--libs提供pkg-config标志是完全多余的,纯编译器无法对库做任何事情。

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

Long story short, read this.