【问题标题】:Undefined reference to 'glib'对“glib”的未定义引用
【发布时间】:2013-07-02 10:51:47
【问题描述】:

我想在我使用的 Codeblocks 中使用 glib 解析一个配置文件。所以我想先做here 描述的例子。我有一个名为 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

在代码块中我将它(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)

标签: gtk codeblocks glib


【解决方案1】:

您没有链接到库,这就是您收到链接器错误(“未定义引用”)的原因。

检查pkg-config --libs glib-2.0 的输出,没有 --cflags,并确保它以某种方式合并到您的项目设置中。

【讨论】:

  • 没有 cflags 的 pkg-config 返回我 -lglib-2.0
  • @dali1985 没错,这是要求它在库中链接所需的编译器标志。您需要告诉 Codeblocks 包含相同的内容。
  • 我现在做了(可能是错的),正如你在我的更新中看到的,我有新错误!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2021-08-24
  • 2011-03-27
  • 2022-01-22
相关资源
最近更新 更多