Compilation impossible programme gtk
J'essaye désespérément depuis hier de compiler un code source qui utilise notamment gtk2.
Lorsque je tente la compilation par un Makefile, j'obtiens une erreur qui commence comme ceci :
make -C ./src siftfeat
make[1]: entrant dans le répertoire « /home/jean/Video/series/lost/sift/src »
gcc -O3 -I../include `pkg-config --cflags opencv` `pkg-config --cflags gtk+-2.0` `pkg-config --cflags gsl` -c utils.c -o utils.o
In file included from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/gtk-2.0/gdk/gdktypes.h:32:18: error: glib.h: Aucun fichier ou répertoire de ce type
In file included from /usr/include/pango-1.0/pango/pango-font.h:25,
from /usr/include/pango-1.0/pango/pango-attributes.h:25,
from /usr/include/pango-1.0/pango/pango.h:25,
from /usr/include/gtk-2.0/gdk/gdktypes.h:33,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/pango-1.0/pango/pango-coverage.h:29: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘typedef’
/usr/include/pango-1.0/pango/pango-coverage.h:38: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:39: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:40: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:41: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:42: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:44: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:47: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:50: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:53: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
In file included from /usr/include/pango-1.0/pango/pango-font.h:26,
from /usr/include/pango-1.0/pango/pango-attributes.h:25,
from /usr/include/pango-1.0/pango/pango.h:25,
from /usr/include/gtk-2.0/gdk/gdktypes.h:33,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/pango-1.0/pango/pango-types.h:26:25: error: glib-object.h: Aucun fichier ou répertoire de ce type
In file included from /usr/include/pango-1.0/pango/pango-font.h:26,
from /usr/include/pango-1.0/pango/pango-attributes.h:25,
from /usr/include/pango-1.0/pango/pango.h:25,
from /usr/include/gtk-2.0/gdk/gdktypes.h:33,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/pango-1.0/pango/pango-types.h:28: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘G_BEGIN_DECLS’
/usr/include/pango-1.0/pango/pango-types.h:43: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PangoGlyph’
/usr/include/pango-1.0/pango/pango-types.h: In function ‘pango_units_from_double’:
/usr/include/pango-1.0/pango/pango-types.h:64: error: expected declaration specifiers before ‘G_GNUC_CONST’
/usr/include/pango-1.0/pango/pango-types.h:65: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘G_GNUC_CONST’
/usr/include/pango-1.0/pango/pango-types.h:126: error: storage class specified for parameter ‘PangoDirection’
/usr/include/pango-1.0/pango/pango-types.h:128: error: expected declaration specifiers before ‘PangoDirection’
/usr/include/pango-1.0/pango/pango-types.h:129: error: expected declaration specifiers before ‘PangoDirection’
/usr/include/pango-1.0/pango/pango-types.h:133: error: expected declaration specifiers before ‘gboolean’
J'ai cherché un peu partout et je suspecte un problème entre gtk et glib :
$ pkg-config --cflags gtk+-2.0
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1
Je ne comprends pas pourquoi les librairies glib sont installées dans /usr/local/include et non pas dans /usr/lib/include.
J'ai vérifié et j'ai bien un dossier glib-2.0 dans /usr/local/include et /usr/include. De même pour /usr/local/lib et /usr/lib.
Si quelqu'un a une idée du problème, merci d'avance
Lorsque je tente la compilation par un Makefile, j'obtiens une erreur qui commence comme ceci :
make -C ./src siftfeat
make[1]: entrant dans le répertoire « /home/jean/Video/series/lost/sift/src »
gcc -O3 -I../include `pkg-config --cflags opencv` `pkg-config --cflags gtk+-2.0` `pkg-config --cflags gsl` -c utils.c -o utils.o
In file included from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/gtk-2.0/gdk/gdktypes.h:32:18: error: glib.h: Aucun fichier ou répertoire de ce type
In file included from /usr/include/pango-1.0/pango/pango-font.h:25,
from /usr/include/pango-1.0/pango/pango-attributes.h:25,
from /usr/include/pango-1.0/pango/pango.h:25,
from /usr/include/gtk-2.0/gdk/gdktypes.h:33,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/pango-1.0/pango/pango-coverage.h:29: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘typedef’
/usr/include/pango-1.0/pango/pango-coverage.h:38: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:39: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:40: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:41: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:42: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:44: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:47: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:50: error: expected ‘)’ before ‘*’ token
/usr/include/pango-1.0/pango/pango-coverage.h:53: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
In file included from /usr/include/pango-1.0/pango/pango-font.h:26,
from /usr/include/pango-1.0/pango/pango-attributes.h:25,
from /usr/include/pango-1.0/pango/pango.h:25,
from /usr/include/gtk-2.0/gdk/gdktypes.h:33,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/pango-1.0/pango/pango-types.h:26:25: error: glib-object.h: Aucun fichier ou répertoire de ce type
In file included from /usr/include/pango-1.0/pango/pango-font.h:26,
from /usr/include/pango-1.0/pango/pango-attributes.h:25,
from /usr/include/pango-1.0/pango/pango.h:25,
from /usr/include/gtk-2.0/gdk/gdktypes.h:33,
from /usr/include/gtk-2.0/gdk/gdkcolor.h:31,
from /usr/include/gtk-2.0/gdk/gdkcairo.h:23,
from /usr/include/gtk-2.0/gdk/gdk.h:30,
from utils.c:15:
/usr/include/pango-1.0/pango/pango-types.h:28: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘G_BEGIN_DECLS’
/usr/include/pango-1.0/pango/pango-types.h:43: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PangoGlyph’
/usr/include/pango-1.0/pango/pango-types.h: In function ‘pango_units_from_double’:
/usr/include/pango-1.0/pango/pango-types.h:64: error: expected declaration specifiers before ‘G_GNUC_CONST’
/usr/include/pango-1.0/pango/pango-types.h:65: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘G_GNUC_CONST’
/usr/include/pango-1.0/pango/pango-types.h:126: error: storage class specified for parameter ‘PangoDirection’
/usr/include/pango-1.0/pango/pango-types.h:128: error: expected declaration specifiers before ‘PangoDirection’
/usr/include/pango-1.0/pango/pango-types.h:129: error: expected declaration specifiers before ‘PangoDirection’
/usr/include/pango-1.0/pango/pango-types.h:133: error: expected declaration specifiers before ‘gboolean’
J'ai cherché un peu partout et je suspecte un problème entre gtk et glib :
$ pkg-config --cflags gtk+-2.0
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1
Je ne comprends pas pourquoi les librairies glib sont installées dans /usr/local/include et non pas dans /usr/lib/include.
J'ai vérifié et j'ai bien un dossier glib-2.0 dans /usr/local/include et /usr/include. De même pour /usr/local/lib et /usr/lib.
Si quelqu'un a une idée du problème, merci d'avance
Configuration: Linux Debian
1 réponse
-
avant de compiler tu fait un ./configure
Par défaut ça configure avec un prefix d'install /usr/local.
C'est pourquoi quand je compile je fait systematiquement et minimun :
./configure --prefix=/usr
J'imagine donc que tu n'as pas utilisé les pkg de ta distrib pour installer gtk+, que tu l'as compilé depuis les source avec un ./configure sans le --prefix=/usr
en bref ça ce passe comme ça au minimum (a remplacer par autogen.sh si il y a) :
./configure --prefix=/usr && make clean && make && make install <--- l'install ce fait en tant que root