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 12/09/2007, à 19:25

torfin

mingw sous linux avec gtk

Bonjour, cela fait plusieurs heures que je cherche avec google et malheureusement je ne trouve aucune solution à mon problème, c'est pourquoi le vous l'expose ici.

Je suis en train de développer un petit logiciel en C et j'utilise comme interface graphique GTK. La compilation avec gcc sous code::blocks marche niquel (installé en suivant le tuto de la documentation de ubuntu-fr.org).
Mais mon problème vient que lorsque je veux compiler en utilisant mingw afin de faire un executable pour windows.
en suivant ce tuto: http://doc.ubuntu-fr.org/tutoriel/comme … es_windows cela fonctionne mais uniquement pour la console. Dès que je veux compiler avec du GTK cela provoque une erreur:
Dans la fenetre "build log":

Linking executable: bin/Debug/essai gtk
obj/Debug/main.o : Dans la fonction "main":/home/guillaume/Projets/test2/main.c:6: référence indéfinie vers « _gtk_init »
collect2: ld returned 1 exit status

Dans la fenetre "build message":

référence indéfinie vers « _gtk_init »

Et voici le code source de mon programme (minimaliste juste pour tester la compilation en initialisant GTK)

#include <stdlib.h>
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
    /* Initialisation de GTK+ */
    gtk_init(&argc, &argv);
    return EXIT_SUCCESS;
}

En espérant que quelqu'un puisse apporter une réponse à ce sujet.

Hors ligne

#2 Le 12/09/2007, à 19:32

trucutu

Re : mingw sous linux avec gtk

Dans ta ligne de commande avec mingw, il y a bien les lien avec la lib GTK ??
Si tu compile ton logiciel avec gcc, et s'il suffit de remplace gcc par ...-gcc pour obtenir le .exe, il n'y a pas de raison que cela ne compile pas avec mingw...


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#3 Le 12/09/2007, à 19:51

torfin

Re : mingw sous linux avec gtk

Dans ta ligne de commande avec mingw, il y a bien les lien avec la lib GTK ??

Comment sa?

Sinon tout mon developpement et la compilation je la fais a partir de code::blocks. Et quand je veux compiler a partir de la console en utilisant mingw (...-gcc) le programme sans gtk fonctionne et avec gtk il ne fonctionne pas.

Ma ligne de commande pour la compilation:

i586-mingw32msvc-gcc -o bonjour.exe main.c

le fichier main.c c'est le code du premier post.
Sinon si on pouvait me dire pour configurer code::blocks pour cette opération (enfin cela n'est pas prioritaire).

Hors ligne

#4 Le 12/09/2007, à 21:07

trucutu

Re : mingw sous linux avec gtk

Ah ben oui, il te manque les CFLAGS et les LDFLAGS liés à GTK. Regardes du côté de pkg-config.

Quand tu dis que tu arrives à compiler avec gcc / code::blocks, c'est que les options de compilation pour GTK doivent être insérées. Sinon :
gcc -o main main.c
Ca ne marchera pas mieux, mingw ou pas...


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#5 Le 12/09/2007, à 21:11

torfin

Re : mingw sous linux avec gtk

oui les options de gtk sont configuré dans code::blocks (tuto du site: http://doc.ubuntu-fr.org/code_blocks)

Et c'est quoi ce que tu appel les CFLAG et les LDFLAGS ?

Sinon avec mingw je n'arrive pas en mode console meme en ajoutant pkg-config ..... kom dans le tuto de code::blocks.

Dernière modification par torfin (Le 12/09/2007, à 21:16)

Hors ligne

#6 Le 12/09/2007, à 21:28

trucutu

Re : mingw sous linux avec gtk

Les CFLAGS et les LDFLAGS, grosso modo, pour GTK, c'est ça :

la doc a écrit :

Sous Project → Build options → Compiler settings → Other options, collez ceci (avec les apostrophes) :
`pkg-config --cflags gtk+-2.0`
Sous Project → Build options → Linker settings → Other linker options, collez (avec les apostrophes) :
`pkg-config --libs gtk+-2.0`

C'est des options de compilation que tu rajoutes dans la ligne de commande pour signaler où sont les .h additionnels que tu utilises (compilation), ainsi que les .so (édition des liens)

Prends le temps de te documenter sur gcc / Makefile appliqués à gtk.
Dans des hello world du net sur gtk, il y a la ligne de commande qu'il faut pour qu'un programme C/GTK compile.
Prend la et changes gcc par ce qu'il faut, et ca devrait marcher.
Pour code::blocks, je ne sais pas, je n'utilise pas cela.

Dernière modification par trucutu (Le 12/09/2007, à 21:28)


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#7 Le 12/09/2007, à 21:34

torfin

Re : mingw sous linux avec gtk

Merci bcp

Hors ligne

#8 Le 12/09/2007, à 21:37

torfin

Re : mingw sous linux avec gtk

Come tu as dit sur les hello world on trouve pour la ligne commande:

gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`

donc avec gcc sa marche mais avec mingw il me retourne cette erreur:

/usr/lib/gcc/i586-mingw32msvc/3.4.5/../../../../i586-mingw32msvc/bin/ld: ne peut trouver -lgtk-x11-2.0
collect2: ld returned 1 exit status

Hors ligne

#9 Le 12/09/2007, à 21:57

trucutu

Re : mingw sous linux avec gtk

...
Mon champ de connaissance va vite se retrouver limité... sad
est-ce que libgtk-x11-2.0.so existe ? (dans /usr/lib ou un truc dans le genre)
en ce qui concerne gtk, il me semble qu'il n'ya pas que gtk à prendre en compte dais les flags, mais aussi glib et pango (de mémoire...). Avec ces deux librairies en plus, cela résoudrait-il le problème ??

Sinon, je pensais à un truc. Sous Linux tu fais un lien dynamique vers GTK. Si la librairie n'est pas présente (ou pas référencé par LD_LIBRARY_PATH), ton programme risque de "gueuler" à l'éxécution. Sous Windows, je ne sais pas comment ça marche, mais il y a fort à parier que si tu compiles ton programme selon le même principe (...gcc -lgtk machinchose), il faudra que GTK soit présent sur l'OS pour que cela marche.... Je ne sais pas si tu y as pensé.

Regardes peut être plus dans la doc de mingw pour voir comment ce passe la compil/len avec une librairie externe

Dernière modification par trucutu (Le 12/09/2007, à 21:58)


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#10 Le 12/09/2007, à 22:01

torfin

Re : mingw sous linux avec gtk

sur mon pc linux la libraire gtk existe puisque avec gcc sa fonctionne sous windows g installé le runtime gtk.
Sinon la librairie libgtk-x11-2.0.so se trouve bien dans /usr/lib

Hors ligne

#11 Le 13/09/2007, à 17:32

torfin

Re : mingw sous linux avec gtk

Up

Hors ligne

#12 Le 23/09/2007, à 14:49

torfin

Re : mingw sous linux avec gtk

up

Hors ligne

#13 Le 25/09/2007, à 17:01

Link Mauve

Re : mingw sous linux avec gtk

J'ai le même problème que je n'ai toujours pas résolu...
J'ai commencé l'installation d'un Windows en VM pour installer les outils nécessaires à la compilation GTK+, mais ça aurait été tellement simple de le faire en cross-compilant...

Hors ligne

#14 Le 11/03/2008, à 21:57

rniamo

Re : mingw sous linux avec gtk

je vais tester mais il me semble que tu tente de compiler un programme pour win avec des librairies pour linux, ça ne pose pas de problèmes ? il ne faut pas la copie pour windows (des librairies j'entends)?


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne