gpt4 book ai didi

c - 链接到 gobject-introspection 库时出现问题

转载 作者:行者123 更新时间:2023-11-30 14:26:16 25 4
gpt4 key购买 nike

我的文件 blah.c 包含:

#include <gobject-introspection-1.0/girepository.h>

int main(int argc,char **argv) {
GIRepository *gir = g_irepository_get_default();
return 0;
}

这当然比我希望编译的文件更简单,但有同样的问题。我编译的是

gcc `pkg-config --cflags --libs gobject-introspection-1.0` blah.c

并得到链接错误:

/tmp/cck88oj4.o: In function `main':
blah.c:(.text+0x10): undefined reference to `g_irepository_get_default'
collect2: ld returned 1 exit status

pkg-config 命令返回

-pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gobject-introspection-1.0  -Wl,--export-dynamic -pthread -lgirepository-1.0 -lgobject-2.0 -lgmodule-2.0 -lffi -lgthread-2.0 -lrt -lglib-2.0

文件 libgirepository-1.0.a 和 libgirepository-1.0.so 都存在于/usr/lib 中。

是什么导致了这个链接错误?

最佳答案

链接错误的原因可能是因为链接器默认使用 -Wl, as-needed 选项进行链接。使用此选项时,在遇到库中的符号之前不会链接库。在当前情况下,由于最后添加了源文件,因此不会遇到库中的任何符号,因此未完成链接。您可以尝试:

gcc blah.c `pkg-config --cflags --libs gobject-introspection-1.0` 

gcc -Wl,-no-as-needed `pkg-config --cflags --libs gobject-introspection-1.0` blah.c

希望这有帮助!

关于c - 链接到 gobject-introspection 库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com