GLIB安装后无法编译基本GLIB程序

时间:2010-02-02 16:38:56

标签: c++ c gcc glib

我似乎无法使用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?

3 个答案:

答案 0 :(得分:5)

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

export 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

答案 1 :(得分: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。如您所见,pkg-config告诉编译器将glib-2.0和glib-2.0 / include目录放入搜索路径,因为根标头在全局路径中搜索。

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

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

答案 2 :(得分:0)

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

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

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