Voici donc le programme glib le plus simple au monde:
#include <glib.h>
J'essaye de le compiler avec gcc test.c
et j'obtiens:
test.c:1:18: error: glib.h: No such file or directory
Je m'assure donc d'avoir les bons packages:
# 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
Ensuite, je recherche n'importe quel "glib.h" n'importe où sous/usr/include. J'en reçois deux, /usr/include/glib-1.2/glib.h et /usr/include/glib-2.0/glib.h. J'essaye donc:
$ 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
(environ 10 000 erreurs supplémentaires coupées)
Je ne semble pas avoir un glibconfig.h
n'importe où sur mon ordinateur.
Qu'est-ce que je fais maintenant?
glib a tendance à se cacher ... Votre instruction include ne fonctionne pas car GCC ne recherche pas automatiquement les sous-répertoires et ne peut donc pas voir le glib.h dans glib-1.2 ou glib-2.0.
Lisez la page Compilation d'applications GLib dans les manuels GLIB ... vous utilisez des commandes comme pkg-config --cflags glib-2.0
pour obtenir les bons indicateurs pour GCC.
La manière canonique de faire ce que vous essayez est
% gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`
Notez les back-ticks, qui indiquent au Shell d'exécuter la commande pkg-config "sur place".
> > The canonical way to do what you are trying is
> % gcc test.c -Wall -o test `pkg-config --cflags --libs glib-2.0`
Désolé, mais non. C'est une idée fausse courante, qui se produit juste dans la plupart des cas sur des systèmes basés sur ELF, Linux en particulier. La manière canonique consiste à passer les cflags et les bibliothèques séparément, aux emplacements corrects et traditionnels sur la ligne de commande, comme ceci:
gcc -Wall -o test `pkg-config --cflags glib-2.0` test.c `pkg-config --libs glib-2.0`
Il est dommage que pkg-config accepte à la fois les options --cflags et --libs, car cela signifie que ce mème incorrect ne mourra jamais, et les gens qui y sont habitués sous Linux continueront d'être déconcertés lorsqu'ils essaieront ensuite la même chose sur d'autres plateformes.
Comme @chris
ladite utilisation pkg-config
.
glibconfig.h is missing
c'est parce que ce fichier n'est pas dans le /usr/include/glib-2.0
, mais en /usr/lib/glib-2.0.
Vous devez donc inclure également ce /usr/lib
chemin ou copiez le fichier dans le /include/glib-2.0
J'utilise aussi glib.h - Faites cela pour compiler tous vos programmes glib.h :)
gcc `pkg-config --cflags --libs glib-2.0` filename.c
Assurez-vous d'entourer pkg-config --cflags --libs glib-2.0
avec des guillemets que vous trouvez sous tilde (touche la plus à gauche du clavier querty).
Merci plus tard ..: P