对'glib'的未定义引用

3
我想使用Codeblocks中的glib解析配置文件。所以我首先想要做的就是按照这里描述的示例进行操作。我的配置文件名为myconfig.cfg,代码文件名为programming.c。我只是复制并粘贴代码,看看glib是否起作用,但不幸的是它没有起作用。我使用sudo apt-get安装了glib2.0,然后找到了glibs中的库所在位置。
pkg-config --cflags --libs glib-2.0

在这条路径中

project->Build Options->Compiler Settings-> Other Options

我添加了。
-I/usr/include/glib-2.0 -I/usr/lib/arm-linuxgnuebihf/glib-2.0/include

当我编译和运行programming.c时,出现了以下错误。
-------------- Build: Debug in programming ---------------
gcc -Wall  -g -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include  -std=c99    -c /home/pi/Desktop/programming/main.c -o obj/Debug/main.o
g++  -o bin/Debug/programming obj/Debug/main.o    /usr/lib/libmysqlclient.so.16 
obj/Debug/main.o: In function `main':
/home/pi/Desktop/programming/main.c:22: undefined reference to `g_key_file_new'
/home/pi/Desktop/programming/main.c:26: undefined reference to `g_key_file_load_from_file'
/home/pi/Desktop/programming/main.c:28: undefined reference to `g_log'
/home/pi/Desktop/programming/main.c:34: undefined reference to `g_slice_alloc'
/home/pi/Desktop/programming/main.c:37: undefined reference to `g_key_file_get_string'
/home/pi/Desktop/programming/main.c:39: undefined reference to `g_key_file_get_locale_string'

/home/pi/Desktop/programming/main.c:41: undefined reference to `g_key_file_get_boolean_list'
/home/pi/Desktop/programming/main.c:43: undefined reference to `g_key_file_get_integer_list'
/home/pi/Desktop/programming/main.c:45: undefined reference to `g_key_file_get_string_list'
/home/pi/Desktop/programming/main.c:47: undefined reference to `g_key_file_get_integer'
/home/pi/Desktop/programming/main.c:49: undefined reference to `g_key_file_get_double_list'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 6 seconds)
11 errors, 0 warnings

我有所遗漏吗?我也尝试使用libconfig以同样的方式操作,但是我仍然遇到了未定义的引用。问题在于路径吗?

更新

使用pkg-config --libs glib-2.0命令返回了-lglib-2.0

在Codeblocks中,我将它(lglib-2.0)插入了

project->Build Options->Linker Settings-> Link Libraries

现在我遇到了这个错误:

**(process:3751): ERROR ** No such file or directory  
Trace/breakpoint trap

你错过了“-”,你应该添加“-lglib-2.0”。此外,最好使用“`pkg-config --cflags glib-2.0`”作为编译器设置选项和“`pkg-config --libs glib-2.0`”作为链接器设置(请注意开头和结尾的“`”符号)。Code::Blocks还允许通过浏览和在链接器设置中选择库来包含库(顺便问一下,你使用的是哪个版本的Code::Blocks)。 - another.anon.coward
1个回答

2

你没有链接库,所以会出现链接器错误(“未定义的引用”)。

检查pkg-config --libs glib-2.0的输出,不要使用--cflags,并确保它以某种方式被纳入你的项目设置中。


没有cflags的pkg-config返回给我-lglib-2.0。 - dali1985
@dali1985 没错,这就是编译器需要的链接库标志。你需要告诉 Codeblocks 包含相同的库。 - unwind
我现在已经做了(可能错了),正如您在我的更新中所看到的,我有新的错误!! - dali1985

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接