Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/05/2005, à 04:10

Kiboumz

[Résolu] Compiler un programme C avec GTK

Bonjour,

j'arrive pas à compiler un progamme utilisant Gtk, mon code est bon puisque j'ai pris un exemple d'un site, je marque cette ligne pour compiler

gcc -Wall -c test.c `pkg-config --cflags --libs gtk+-2.0`

et ca me sort toute ces erreurs... peut être que j'utilise mal la ligne de commande ?

gcc: -lgtk-x11-2.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lgdk-x11-2.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -latk-1.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lgdk_pixbuf-2.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lm: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lpangoxft-1.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faitegcc: -lpangox-1.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lpango-1.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lgobject-2.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lgmodule-2.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -ldl: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
gcc: -lglib-2.0: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite


Merci
a+

#2 Le 29/05/2005, à 12:35

tigrou

Re : [Résolu] Compiler un programme C avec GTK

Salut,

ce sont juste des warnings, si tu regardes bien, le test.o est bien créer. Ces warnings sont là car tu indiques les paramètres pour l'édition de liens alors que tu ne l'as fait pas avec l'option -c. Si tu n'as qu'un seul fichier .c fait plutot

gcc -Wall test.c `pkg-config --cflags --libs gtk+-2.0` -o test
./test

et tu auras ton exécutable directement

Si tu as plusieurs fichiers .c, compile les avec

gcc -Wall -c gtk.c `pkg-config --cflags gtk+-2.0`
# pareil pour les autres ...
gcc -Wall *.o  `pkg-config --cflags --libs gtk+-2.0` -o test

Biensur il est plutot conseillé d'écrire un makefile dans ce dernier cas mais c'est une autre histoire smile

Hors ligne

#3 Le 29/05/2005, à 14:49

Kiboumz

Re : [Résolu] Compiler un programme C avec GTK

Merci pour ta réponse smile

Au fait, à quoi sert le -Wall de gcc ?

Merci
a+

#4 Le 29/05/2005, à 14:55

tigrou

Re : [Résolu] Compiler un programme C avec GTK

-Wall veut dire All Warnings

Hors ligne

#5 Le 29/05/2005, à 15:27

Kiboumz

Re : [Résolu] Compiler un programme C avec GTK

Re,

Merci encore une fois pour ta réponse d'une rapidité renversante!

Ne connaitrais-tu pas un site qui explique clairement ce que veulent dire tous les paramètres que l'on peut utiliser avec gcc et gtk ?

par exemple ce que veut dire -o (j'imagine que ca crée un .objet)
ou ce que veut dire --cflags

Merci
a+

#6 Le 29/05/2005, à 16:21

tigrou

Re : [Résolu] Compiler un programme C avec GTK

Pour les options de gcc tu peux regarder sa page du manuel même si c'est un peu indigeste (très long et pas toujours à jour) alors je fais un rapide récapitulatif des options qui servent souvent (tu dois pouvoir trouver nombre de documentations + ou - complètes la dessus sur le web) :
-Wall : tous les warnings
-o executable : création de l'éxécutable
-c : création des .o (fichiers objets)
-I/repertoire/ : ajoute le répertoire pour la recherche des header (#include <header.h>)
-lmalib : utilise malib pour l'édition des liens
-DMA_CONSTANTE : équivalent de #define MA_CONSTANTE au début du source

Bon avec ça tu peux déjà faire pas mal de truc, la plupart des autres paramètres de gcc sont dédiés à l'optimisation.

Ensuite sur la ligne qui te sert à compiler tu as `pkg-config --cflags --libs gtk+-2.0`
les ` indiquent au shell d'éxécuter la commande et de mettre le résultat sur la ligne de commande. Si tu éxécute pkg-config --cflags --libs gtk+-2.0 tu obtiens quelque chose comme :

tigrou@Lorien:~$ pkg-config --cflags --libs gtk+-2.0
-DXTHREADS -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -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

ce sont tous les paramètres nécessaires pour compiler un programme utilisant GTK, comme y'en a beaucoup, pkg-config est là pour simpilfier la vie du développeur smile
Du coup les deux lignes suivantes sont en fait les même :

gcc -Wall test.c `pkg-config --cflags --libs gtk+-2.0` -o test
gcc -Wall test.c  -DXTHREADS -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -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 -o test

Pour pkg-config les options utilies sont :
--libs : les paramètres pour l'édition de liens
--cflags : les paramètre pour l'inclusion de header
mais il en existe d'autres, je te laisse consulter pkg-config --help ou man pkg-config.

Hors ligne

#7 Le 29/05/2005, à 16:23

Kiboumz

Re : [Résolu] Compiler un programme C avec GTK

Merci encore pour ta réponse, ça répond à ma question !

Merci
a+

#8 Le 29/05/2005, à 18:03

yeKcim

Re : [Résolu] Compiler un programme C avec GTK

J'ajoute résolu dans le titre


Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr

Hors ligne