无法编译glib程序

时间:2016-02-27 13:09:19

标签: glib

我正在编译我的第一个glib程序,我收到错误

first.c:2:19: fatal error: gtypes.h: No such file or directory

编译终止。

我正在使用GLib手册中提到的pkg-config utilit进行编译 这是pkg-config --cflags glib-2.0

的输出
==>-I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include 

我用于编译的命令是

gcc `pkg-config --cflags glib-2.0` first.c

可能是什么原因?

2 个答案:

答案 0 :(得分:0)

尝试将包含更改为

#include <glib/gtypes.h>

并且您会看到一条错误,指出不要直接包含gtypes.h。你的pkg-config使用率看起来不错,所以请改用它,

#include <glib.h>

并且应包含gtypes.hglib所需的其他标头。

答案 1 :(得分:0)

与G *堆栈中的许多其他库一样,GLib附带了多个头文件,但只允许包含来自用户代码的顶级头文件。这意味着在包含头文件时避免依赖性问题,并允许库开发人员在不破坏用户代码的情况下移动定义和符号。

对于GLib,您可以包含的顶级标题按复杂程度排列:

  • glib.h,适用于低级别类型和API
  • glib-object.h,GType类型系统
  • gio/gio.h,用于GIO输入/输出和高级API(例如GDBus,GSettings等)

glib.h之后的每个标题也包括之前的标题,因此如果您想使用GObject,则不需要包含glib.h,并且您不需要包含glib-object.h如果您想使用GIO。