Programmation GTK Linux , problème de #include - C++ - Programmation
Marsh Posté le 26-03-2003 à 15:44:29
Perso je n'ai jamais utilisé pkg-config, mais toujours le *-config spécifique à la librairie, soit dans ce cas le gtk-config.
Est ce que ça marche en faisant
$ gcc main.c -o main 'gtk-config --cflags --libs'
Si oui, il est possible que le pkg-config soit mal configuré : je pense que `gtk-config --cflags --libs` et 'pkg-config --cflags --libs gtk+-2.0' devraient renvoyer le même résultat, faudrait vérifier.
Au pire tu peux toujours forcer le répertoire d'include avec l'option -I/usr/include/gtk-2.0, mais ce n'est pas très joli, et l'intérêt des *-config est justement d'éviter les lignes de compile à rallonge. En plus tu risques d'avoir d'autres problèmes au moment du lien.
Marsh Posté le 02-04-2003 à 12:22:48
Bon j'ai fais le test, et cela ne fonctionne pas non plus :
$ gcc main.c -o main 'gtk-config --cflags --libs'
gcc: gtk-config --cflags --libs: Aucun fichier ou r?pertoire de ce type
main.c:1:20: gtk/gtk.h: Aucun fichier ou répertoire de ce type
je comprends pas tout...
des idées ??
Marsh Posté le 02-04-2003 à 15:09:46
Heu...
Question bête : tu es sûr d'avoir correctement intallé la gtk-devel ? Si tu tapes gtk-config --version sur une ligne de commande, il te dis quoi ?
Normalement, gtk-config te renvoie les options de compilation qui vont bien, soit
$ gtk-config --cflags --libs
-I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include
-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
Si gtk-config n'est pas intallé, tu peux toujours mettre ces options à la main : tu reprends les lignes au dessus en mettant les bons répertoires.
Marsh Posté le 17-08-2004 à 21:30:17
je me permes de upper un peu ce topik car j'ai le même problème !
gtk-config --version
--> ça me donne la version de gtk (enfin si je me rappelle bien).
$ gtk-config --cflags --libs
---> ça me donne un peu près ça :
-I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include
-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
N.B : il m'indique comme message d'erreur :
main.cpp:1:21: gtk/gtk.h: Aucun fichier ou répertoire de ce type (en anglais par contre lol).
j'utilise mdk 9.2 (avant windows mais trop compliqué pour la compil lol)
Marsh Posté le 17-08-2004 à 22:56:01
$(gtk-config --cflags --libs) (ou avec backquotes `) (ou avec pkg-config plus génériquement)
t'as pas le fichier ? ben installe les paquets de développement
Marsh Posté le 17-08-2004 à 22:56:37
Tu as bien utilisé des ` et non pas des ' pour la ligne de commande de gcc ?
Marsh Posté le 18-08-2004 à 12:09:44
bah disons franchement le problème c que c le bordel pour compiler. honnétement on nous apprend pas à compiler quoi que ce soit sous linux en iut et résultat en sortant de là bah on sait même pas créer un programme en dehors de windows (et encore)...
franchement tout ce qui est dit ici je l'ai jamais vu ce qui est quand même un comble !
est ce que vous pourriez détailler un peu plus ?
Marsh Posté le 19-08-2004 à 09:54:18
ou à la limite juste une adresse ou un cours pour savoir comment compiler avec gcc et gtk
Marsh Posté le 20-08-2004 à 19:05:30
voila une réponse plus clair à mon prb :
Voilà j'ai un gros problème de compilation gtk sous linux.
[kerdreux@localhost visualisation]$ pkg-config --modversion gtk+
2.2.4
[kerdreux@localhost visualisation]$ pkg-config --cflags --libs gtk+
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
ors quand je lance mon main.cpp avec la commande suivante :
[kerdreux@localhost visualisation]$ gcc -Wall -g main.cpp -o main 'gtk-config --cflags –libs'
j'obtiens le résultat suivant :
gcc: gtk-config --cflags --libs: No such file or directory
main.cpp:10:21: gtk/gtk.h: No such file or directory
main.cpp:19: error: `GtkWidget' was not declared in this scope
...
en modifiant la compile avec :
[kerdreux@localhost visualisation]$ cat compile
gcc -Wall -g main.cpp -o main -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
[kerdreux@localhost visualisation]$
j'obtiens :
[kerdreux@localhost visualisation]$ compile
/home/kerdreux/tmp/ccaigFbW.o(.eh_frame+0x11): In function `main':
/mnt/win_d2/visualisation/main.cpp:35: undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
[kerdreux@localhost visualisation]$
par contre en modifiant tous les appels aux fonctions gtk (je les mes en commentaire) il me compile correctement le programme.
Voici le code source :
Code :
|
Marsh Posté le 20-08-2004 à 20:39:06
On a dis d'utiliser des ` à la place des ' dans la ligne de commande de gcc
Marsh Posté le 20-08-2004 à 20:46:10
Kristoph a écrit : On a dis d'utiliser des ` à la place des ' dans la ligne de commande de gcc |
ouais...
ça fait bcp de posts pour rien en plus
Marsh Posté le 20-08-2004 à 22:55:28
farib a écrit : ouais... |
---> bah désolé j'avais vu mais je comprenais pas trop la différence parce que perso j'avais jamais utilisé le ` et franchement je voyais même pas ou il était (en plus j'ai fais un copier coller d'un site !)
en même temps j'ai mis les chemins directement dans la commande gcc donc ça aurait du marché aussi non ?
Marsh Posté le 21-08-2004 à 10:01:13
--> bon j'ai modifié en remplaçant ' par ` et certe il m'envoie plus l'erreur :
gcc: gtk-config --cflags --libs: No such file or directory
mais l'erreur (la même erreur que lorsque j'inclue à la mano les chemins d'accès dans la ligne de compilation) :
[kerdreux@localhost visualisation]$ compile
/home/kerdreux/tmp/ccaigFbW.o(.eh_frame+0x11): In function `main':
/mnt/win_d2/visualisation/main.cpp:35: undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
(et par conséquent ce n'est donc pas un post de plus pour rien...).
donc si quelqu'un pouvait m'aider car il m'envoie une erreur comme ça sur chaque fonction gtk (du moins sur la première rencontrée à chaque fois).
Marsh Posté le 26-03-2003 à 14:52:36
bonjour,
lorsque je fais
$ gcc main.c -o main 'pkg-config --cflags --libs gtk+-2.0'
j'obtiens une erreur comme quoi le fichier est introuvable
dans le dossier /usr/include j'ai pourtant
gtk-1.2/gtk/gtk.h
gtk-2.0/gtk/gtk.h
en remplaçant la ligne de commande ainsi :
$ gcc main.c -o main 'pkg-config --cflags --libs gtk-2.0'
ça ne fonctionne pas non plus, gcc ne trouve pas gtk/gtk.h que je met en #include<gtk/gtk.h>
si je met #include<gtk-2.0/gtk/gtk.h> ça marche mais alors gcc ne trouve pas tous les .h utilisés pas gtk.
Comment puis-je résoudre ce problème ??
Merci !
PS : j'ai hésité à mettre ce sijet dans OS Alternatifs