Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1446 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Programmation GTK Linux , problème de #include

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programmation GTK Linux , problème de #include

n°343870
ceyquem
E falso sequitur quodlibet
Posté le 26-03-2003 à 14:52:36  profilanswer
 

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  :??:

mood
Publicité
Posté le 26-03-2003 à 14:52:36  profilanswer
 

n°343988
umag
deux yeux sinon rien
Posté le 26-03-2003 à 15:44:29  profilanswer
 

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.

n°347855
ceyquem
E falso sequitur quodlibet
Posté le 31-03-2003 à 00:04:26  profilanswer
 

je vais regarder ça...
merci !

n°350033
ceyquem
E falso sequitur quodlibet
Posté le 02-04-2003 à 12:22:48  profilanswer
 

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 ??

n°350220
umag
deux yeux sinon rien
Posté le 02-04-2003 à 15:09:46  profilanswer
 

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.

n°825471
lordankou
Posté le 17-08-2004 à 21:30:17  profilanswer
 

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)

n°825556
Taz
bisounours-codeur
Posté le 17-08-2004 à 22:56:01  profilanswer
 

$(gtk-config --cflags --libs) :o (ou avec backquotes `) (ou avec pkg-config plus génériquement)
 
t'as pas le fichier ? ben installe les paquets de développement :o

n°825558
Kristoph
Posté le 17-08-2004 à 22:56:37  profilanswer
 

Tu as bien utilisé des ` et non pas des ' pour la ligne de commande de gcc ?

n°825743
lordankou
Posté le 18-08-2004 à 12:09:44  profilanswer
 

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 ?

n°826493
lordankou
Posté le 19-08-2004 à 09:54:18  profilanswer
 

ou à la limite juste une adresse ou un cours pour savoir comment compiler avec gcc et gtk

mood
Publicité
Posté le 19-08-2004 à 09:54:18  profilanswer
 

n°828009
lordankou
Posté le 20-08-2004 à 19:05:30  profilanswer
 

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 :
  1. /********************
  2. *  Implementation
  3. ********************/
  4. /**********
  5. LIBRAIRIE
  6. **********/
  7. #include <stdlib.h>
  8. #include <gtk/gtk.h>
  9. #include "texte.h" // fichier contenant les expressions
  10. /**********************
  11. EN TETE DES FONCTIONS
  12. **********************/
  13. // procedure de destruction d'une fenetre
  14. void OnDestroy(GtkWidget *Fenetre, gpointer Data);
  15. // procedure d'initialisation d'une fenetre
  16. void InitWindows(GtkWidget *Fenetre);
  17. /************************
  18. PROGAMMA PRINCIPALE
  19. ************************/
  20. int main(int argc, char **argv)
  21. {
  22.     // creation du widget
  23.     GtkWidget *Console;
  24.     // init du GTK
  25.     gtk_init(&argc, &argv);
  26.     // init du widget
  27.     Console = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  28.     // connecxion du signal destroy
  29.     //g_signal_connect(G_OBJECT(Consol, "destroy", G_CALLBACK(OnDestroy),NULL);
  30.     // affichage de la fenetre
  31.     gtk_widget_show(Console);
  32.     // boucle evenementielle
  33.     gtk_main();
  34.     // fin du prg
  35.     return EXIT_SUCCESS;
  36. }
  37. /********************
  38. CORPS DES FONCTIONS
  39. ********************/
  40. // procedure de destruction d'une fenetre
  41. void OnDestroy(GtkWidget *Fenetre, gpointer Data)
  42. {
  43.   // arrêt de la boucle evenementielle
  44.   gtk_main_quit();
  45. }
  46. // procedure d'initialisation d'une fenetre
  47. void InitWindows(GtkWidget *Fenetre)
  48. {
  49.   // position de la fenetre passé en paramètre : aléatoire
  50.   gtk_window_set_position(GTK_WINDOW(Fenetre),GTK_WIN_POS_NONE) ;
  51.   // Titre de la fenetre à partir du fichier
  52.   gtk_window_set_title(GTK_WINDOW(Fenetre),NameWindows);
  53.   // taille de la fenetre
  54.   gtk_window_set_default_size(GTK_WINDOW(Fenetre),LargeurWindow,HauteurWindow);
  55. }

n°828043
Kristoph
Posté le 20-08-2004 à 20:39:06  profilanswer
 

On a dis d'utiliser des ` à la place des ' dans la ligne de commande de gcc :o

n°828049
farib
Posté le 20-08-2004 à 20:46:10  profilanswer
 

Kristoph a écrit :

On a dis d'utiliser des ` à la place des ' dans la ligne de commande de gcc :o


 
ouais...
 
ça fait bcp de posts pour rien en plus


Message édité par farib le 20-08-2004 à 20:46:45

---------------
Bitcoin, Magical Thinking, and Political Ideology
n°828055
Taz
bisounours-codeur
Posté le 20-08-2004 à 20:54:56  profilanswer
 

"connecxion"
 
t'as oublié un t :o

n°828163
lordankou
Posté le 20-08-2004 à 22:55:28  profilanswer
 

farib a écrit :

ouais...
 
ça fait bcp de posts pour rien en plus


 
---> 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  :lol: (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 ?
 


Message édité par lordankou le 21-08-2004 à 10:01:07

---------------

n°828260
lordankou
Posté le 21-08-2004 à 10:01:13  profilanswer
 

--> 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).


---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Programmation GTK Linux , problème de #include

 

Sujets relatifs
Trop de variables de session = problème ?problème sur message d'erreur java
pilote periph linux[PHP]Problème récuperation fichier uploadé:open_basedir restriction...
problème: html et metaname[Java] Problème constaté avec 2 cartes réseau
[PHP] include qui marche pas ?[PHP] probleme avec des pseudo frames...
problème jsp/java/tomcatprobleme programmation driver linux de carte E/S
Plus de sujets relatifs à : Programmation GTK Linux , problème de #include


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR