我似乎无法使用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?
答案 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
标志,您可以将这些标志传递给链接器,以便链接所有正确的库,并正确指定链接器搜索路径。