Почему я не могу создать «привет» для glib? - PullRequest
44 голосов
/ 18 июля 2009

Итак, вот самая простая в мире 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

Затем я ищу любой "glib.h" в каталоге / usr / include. Я получаю два, /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.

Что мне теперь делать?

Ответы [ 5 ]

52 голосов
/ 18 июля 2009

glib имеет тенденцию скрываться ... Ваш оператор включения не работает, потому что GCC не выполняет автоматический поиск в подкаталогах и поэтому не может видеть glib.h в glib-1.2 или glib-2.0.

Прочтите страницу Компиляция приложений GLib в руководствах GLIB ... вы используете такие команды, как pkg-config --cflags glib-2.0, чтобы получить правильные флаги для GCC.

Канонический способ сделать то, что вы пытаетесь это

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

Обратите внимание на обратные галочки, которые говорят оболочке запускать команду pkg-config «на месте».

40 голосов
/ 15 февраля 2010
> > 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. Каноническим способом является передача флагов и библиотек отдельно, в правильных и традиционных местах командной строки, например:

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

Жаль, что pkg-config одновременно принимает опции --cflags и --libs, так как это означает, что этот некорректный мем никогда не умрет, и люди, привыкшие к нему в Linux, будут продолжать сбивать с толку, когда затем они пробуют то же самое на других платформах.

7 голосов
/ 20 июня 2012

Как @chris сказал использовать pkg-config.

glibconfig.h is missing 

это потому, что этот файл не в /usr/include/glib-2.0, а в /usr/lib/glib-2.0. Так что вы должны также включить этот путь /usr/lib или скопировать файл в /include/glib-2.0

0 голосов
/ 19 января 2017

Я также использую glib.h Сделайте это, чтобы скомпилировать все ваши программы glib.h:)

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

Обязательно окружите pkg-config --cflags --libs glib-2.0 обратными кавычками который вы найдете под тильдой (самая левая клавиша на клавиатуре запроса).

Спасибо, позже ..: P

0 голосов
/ 18 июля 2009

apt-get build-dep ваш друг - никто не может вспомнить все пакеты, необходимые для сборки чего-либо.

...