45

所以这是世界上最简单的 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/glib-1.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任何地方。

现在我该怎么做?

4

5 回答 5

54

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

阅读GLIB 手册中的编译 GLib 应用程序pkg-config --cflags glib-2.0页面...您使用诸如获取 GCC 的正确标志之类的命令。

做你正在尝试的典型方法是

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

请注意反引号,它告诉外壳程序“就地”运行 pkg-config 命令。

于 2009-07-17T23:05:38.633 回答
42
> > 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 选项,因为这意味着这个不正确的 meme 永远不会消失,而在 Linux 上习惯它的人在尝试时会继续感到困惑其他平台也一样。

于 2010-02-15T10:56:30.707 回答
8

正如@chris所说的使用pkg-config

glibconfig.h is missing 

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

于 2012-06-20T06:31:31.257 回答
0

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

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

确保pkg-config --cflags --libs glib-2.0用您在波浪号(查询键盘上最左边的键)下找到的反引号括起来。

稍后谢谢我.. :P

于 2017-01-19T04:21:59.180 回答
-3

apt-get build-dep是你的朋友——没有人能记住你构建某些东西所需的所有包。

于 2009-07-17T23:20:21.600 回答