Подтвердить что ты не робот

Почему я не могу создать "мир привет" для glib?

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

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

4b9b3361

Ответ 1

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

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

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

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

Обратите внимание на обратные тики, которые сообщают оболочке о запуске команды pkg-config "на месте".

Ответ 2

> > 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, будут по-прежнему сбиваться с толку, когда они затем пытаются использовать их на других платформах.

Ответ 3

Как сказал @chris, используйте pkg-config

   glibconfig.h is missing 

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

Ответ 4

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

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

убедитесь, что окружение pkg-config --cflags --libs glib-2.0 с обратными кавычками который вы находите под тильдой (оставил самый ключ на клавиатуре querty).

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

Ответ 5

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