1

我似乎无法使用 glib.h 编译这个基本程序......

#include glib.h
#include stdio.h

int    main ()
{
return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));  ;
return 0;
}

glib.h 位于 /usr/local/include/glib-2.0

所以我编译了

$ gcc -v -c -mcpu=v9 -I/usr/local/include/glib-2.0 testme2.c 

现在我错过了 glibconfig.h。但它在/usr/local/lib/glib-2.0/include/glibconfig.h

奇怪的是 glibconfig.h 是/usr/local/lib/glib-2.0/include目录中唯一的文件,更奇怪的是它不在/usr/local/include/glib-2.0目录中

这里还有一些错误信息...

from /usr/local/include/glib-2.0/glib.h:32,
            from testme.c:40:
:34:24: glibconfig.h: No such file or directory

这是 /usr/local/include/glib-2.0/glib/gtypes.h 的摘录

ifndef __G_TYPES_H__
define __G_TYPES_H__

include glibconfig.h
include glib/gmacros.h

G_BEGIN_DECLS

typedef char   gchar;
typedef short  gshort;

问题是 GCC 应该如何找到 glibconfig.h?

4

3 回答 3

5

Glib 安装了一个glib-2.0.pc文件,该文件描述了编译和链接所需的所有选项。

导出 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
g++ -c `pkg-config --cflags glib-2.0` testme2.c
g++ -o testme2 testme.o `pkg-config --libs glib-2.0`

注意pkg-config反引号内的使用。

于 2010-02-02T16:53:52.503 回答
3

$ pkg-config --cflags --libs glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0

如果存在所需库的 .pc 文件,建议使用 pkg-config 而不是手动配置,如果您有特定需求或不存在要使用的库的配置,则回退到手动配置。如您所见,pkg-config 告诉编译器将 glib-2.0 和 glib-2.0/include 目录放入搜索路径中,因为根标头在全局路径中搜索。

您可以通过以下方式将 pkg-config 输出推断到您的编译命令中 gcc `pkg-config ...` ...

.pc 文件通常安装在 /usr/include/pkgconfig

于 2010-02-02T16:55:51.700 回答
0

glib 发行版中应该有一个名为glib-config. 如果您使用--cflags参数运行它,它将列出所有必要的 gcc 标志。例如在我的系统上:

$ glib-config --cflags
-I/usr/include/glib-1.2 -I/usr/lib/glib/include

如您所见,这两个目录都被指定为包含目录。还有一个--libs标志,您可以将其传递给您的链接器,以便链接所有正确的库,并正确指定链接器搜索路径。

于 2010-02-02T16:53:21.457 回答