Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
MinGW et GTK
Envoyé par: menelrandir

Bonjour, ou plutôt bonsoir

J'ai besoin de compiler sous linux du C pour windows, donc j'ai installé minGW et ça marche bien sur des programme C n'utilisant pas de bibliothèques particulières. Par contre dès que j'essaie d'utiliser gtk (je suppose que le problème serait le même avec n'importe quelle autre bibliothèque non standard), avec la commande :
i586-mingw32msvc-gcc `pkg-config --libs --cflags gtk+-2.0` test.c -o test.exe
et un fichier source qui compile sans problème avec gcc, ça donne l'erreur suivante :
/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
Si j'ai bien compris, c'est l'édition de lien qui ne marche pas, ce qui semble logique, puisque je n'ai installé les paquet de développement de gtk 2.0 que pour linux. J'ai donc deux questions :
1) Le problème est-il bien là, ou est-ce que je n'ai rien compris ?
2) Si c'est bien ça, comment faut il faire ces liens et est-il toujours possible d'utiliser pkg-config ?

Merci de vos réponses

Poste le Monday 27 February 2006 00:32:23
Répondre     Citer    
Re: MinGW et GTK
Envoyé par: ryko

Salut,

Bien que loin d'être développeur (aussi je me plante peut être) ce que le linker ne semble pas trouver c'est plutot une lib, la libgtk-x11-2.0, donc il faudrait la compiler et l'installer.

Je ne connais pas trop minGW ayant rarement compilé la dessus mais je crois qu'avec cygwin tu aurais moins de soucis (Car sur cygwin j'ai bien une libgtk-x11-2.0) mais qu'ensuite pour la distribution il faudra distribuer une dll de cygwin (a moins qu'une option de compilation permettent d'éviter cela).

Poste le Tuesday 7 March 2006 13:32:06
Répondre     Citer    
Re: MinGW et GTK
Envoyé par: ryko

oops :-)

Citation
menelrandir
J'ai besoin de compiler sous linux du C pour windows

Excuses moi, je n'avais pas vu que tu cross-compilais.

Poste le Tuesday 7 March 2006 13:44:06
Répondre     Citer    
Re: MinGW et GTK
Envoyé par: menelrandir

Bon en fait j'ai en partie résolu le problème, j'ai téléchargé les versions win32 des paquets de dévellopement des différentes bibliothèques (gtk+ et ses dépendances), j'ai modifier les chemins d'accès dasn les fichiers .pc correspondant et j'ai écrit un petit script qui appelle
i586-mingw32msvc-gcc `pkg-config --libs --cflags gtk+-win32-2.0` $*
Après avoir modifier la variable d'environnement PKG_CONFIG_PATH afin que pkg-config prenne bien en compte les version win32 des bibliothèques. Il trouve alors bien les bibliothèques, mais j'obtient des erreurs de ca type :
/tmp/ccGIXtMY.o:test.csad smiley.text+0x3f): undefined reference to `_gtk_init_abi_check'
J'obtient le même type d'erreur en utilisant l'option -static avec gcc, je suppose donc que mingw32 établi par défaut des liens physiques, alors que les dll de windows, comme leur nom l'indique, sont faites pour être liés dynamiquement, mais je ne trouve pas d'option pour le forcer à faire des liens dynamiques, après tout il serait logique qu'une telle option n'existe pas puisque c'est le comportement par défaut de gcc. J'ai essayer man i586-mingw32msvc-gcc mais ça renvoie sur le manuel de gcc, donc rien de spécifique à mingw :-(

Poste le Thursday 9 March 2006 13:55:07
Répondre     Citer    
Re: MinGW et GTK
Envoyé par: Thib_G

J'ai exactement le même problème en suivant la procédure indiquée ici :
[www.ecn.wfu.edu]

Petites précisions :
J'utilise le paquet mingw32 de dapper drake, et tous mes fichiers sont dans /usr/i586-mingw32msvc/ et non dans /opt/cross-tools/mingw32/

Poste le Sunday 28 May 2006 17:33:34
Répondre     Citer    
Re: MinGW et GTK
Envoyé par: menelrandir

J'avais un peu laissé tombé tout ça faute de temps, je m'y suis remis hier et maintenant ça marche sans problème.

Il faut donc décompresser les fichiers de développement de gtk+ (trouvé ici : [www.gimp.org]) dans /usr/i586-mingw32msvc/ (sous Debian Sarge) puis modifier les fichiers .pc avec ce script :
#!/bin/sh

TARGET=/usr/i586-mingw32msvc

for f in *.pc ; do
   if grep 'prefix=/target' $f >/dev/null 2>&1 ; then
     cat $f | sed s+^prefix=/target+prefix=$TARGET+ > $f.tmp
     mv $f.tmp $f
   fi
done
qui est celui du lien donné par Thib_G, en adaptant simplement la valeur de TARGET.

Il y a ensuite quelques variables d'environnement à définir, avant la compilation, avec le fichier cross.env (toujours sur la page indiqué par Thib_G) en adaptant la valeur de PREFIX.

On peut alors compiler sans problème avec i586-mingw32msvc-gcc, pkg-config marche sans problème.

J'ai aussi essayer en C++ avec GTKmm, et là ça ne marche plus, j'ai des erreurs du type :
main.o: dans la fonction « main »:
main.c++sad smiley.text+0x2e): undefined reference to `_ZN3Gtk4MainC1ERiRPPcb'
main.c++sad smiley.text+0x44): undefined reference to `_ZN3Gtk4Main3runERNS_6WindowE'
main.c++sad smiley.text+0x5a): undefined reference to `_ZN3Gtk4MainD1Ev'
main.c++sad smiley.text+0x8a): undefined reference to `_ZN3Gtk4MainD1Ev'
main.c++sad smiley.text+0x98): undefined reference to `_Unwind_Resume'

Il faut dire que pour les versions win32 de gtkmm, il y a seulement un installateur, j'ai du l'éxecuter avec wine puis récupéré les fichiers dans ~/.wine/drive_c/GTK, ce qui n'est pas forcément la meilleure méthode.

Poste le Monday 14 August 2006 17:00:19
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
MinGW et GTK
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons