为什么我不能为glib建立一个“hello world”?

时间:2009-07-17 22:43:00

标签: c glib

所以这是世界上最简单的滑稽程序:

#include <glib.h>

我尝试用gcc test.c编译它,然后我得到:

test.c:1:18: error: glib.h: No such file or directory

所以我确保我有合适的包裹:

# dpkg -l | grep libglib
ii  libglib-perl                              1:1.183-1                               Perl interface to the GLib and GObject libra
ii  libglib1.2-dev                            1.2.10-19build1                         The GLib library of C routines (development)
ii  libglib1.2ldbl                            1.2.10-19build1                         The GLib library of C routines
ii  libglib2.0-0                              2.20.1-0ubuntu2                         The GLib library of C routines
ii  libglib2.0-cil                            2.12.1-1ubuntu2                         CLI binding for the GLib utility library 2.1
ii  libglib2.0-data                           2.18.2-0ubuntu2                         Common files for GLib library
ii  libglib2.0-dev                            2.20.1-0ubuntu2                         Development files for the GLib library
ii  libglibmm-2.4-1c2a                        2.18.1-1                                C++ wrapper for the GLib toolkit (shared lib

然后我在/ usr / include下搜索任何“glib.h”。我得到两个,/ usr / include / glib1.2 / glib.h和/usr/include/glib-2.0/glib.h。所以我试试:

$ gcc -I/usr/include/glib-2.0 -Wall test.c  
In file included from /usr/include/glib-2.0/glib/galloca.h:34,
             from /usr/include/glib-2.0/glib.h:32,
             from test.c:2:
/usr/include/glib-2.0/glib/gtypes.h:34:24: error: glibconfig.h: No such file or directory

(大约有10,000多个错误被剪掉)

我的计算机上似乎没有glibconfig.h

我现在该怎么办?

5 个答案:

答案 0 :(得分:52)

glib往往隐藏自己...你的include语句不起作用,因为GCC不会自动搜索子目录,因此无法在glib-1.2或glib-2.0中看到glib.h。

阅读GLIB手册中的Compiling GLib Applications页面...您使用pkg-config --cflags glib-2.0之类的命令为GCC获取正确的标记。

做正在尝试的事情的规范方式是

% gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`

注意后退标记,它告诉shell“就地”运行pkg-config命令。

答案 1 :(得分:40)

> > The canonical way to do what you are trying is

> % gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`

抱歉,但没有。这是一种常见的误解,在大多数情况下恰好适用于基于ELF的系统,特别是Linux。规范的方法是在命令行的正确和传统位置单独传递cflags和库,如下所示:

gcc -Wall -o test `pkg-config --cflags glib-2.0` test.c `pkg-config --libs glib-2.0`

很遗憾,pkg-config同时接受--cflags和--libs选项,因为这意味着这个不正确的模因永远不会消亡,而在Linux上习惯使用它的人将继续感到困惑然后他们在其他平台上尝试相同的操作。

答案 2 :(得分:7)

@chris表示使用pkg-config

glibconfig.h is missing 

这是因为此文件不在/usr/include/glib-2.0中,而在/usr/lib/glib-2.0.中,因此您还必须包含此/usr/lib路径或将文件复制到/include/glib-2.0

答案 3 :(得分:0)

我也在使用glib.h- 这样做是为了编译你所有的glib.h程序:)

gcc `pkg-config --cflags --libs glib-2.0` filename.c

请务必使用反引号括住pkg-config --cflags --libs glib-2.0 你在tilde下找到的(在querty键盘上最左边的键)。

稍后谢谢..:P

答案 4 :(得分:-3)

apt-get build-dep是你的朋友 - 没有人能记住你需要构建的所有软件包。