Le vendredi 12 janvier 2007 11:45, Aurelien Roux a écrit : > Bonjour, > > Je dois utiliser un programme en C codé sous Linux, et compilé sous > Linux sous Windows. > > J'ai suivi le tutoriel de la page suivante : > www.dumbbell.fr/howto/win32-cross-compilation.fr.html > > Le problème c'est qu'après install de mingw32, rien n'y fait, je n'ai > pas de commande commençant par i686. > Au mieux, j'ai une commande qui commence par i586.
Il me semble que spécifier --target=i586-mingw32msvc comme option à ./configure suffit pour utiliser les outils paquet mingw32. Pour les compilations sans ./configure, il faut redéfinir les variables CC, LD & co et examiner les Makefiles (oui c'est souvent pénible) pour préfixer les commandes cc, g++, ld & co par i586-mingw32msvc- L'exemple de la page citée compile sans problèmes. > J'ai donc essayé de l'utiliser, certains des programmes fonctionnent, > mais le principal semble présenter des problèmes d'overflow (ou en tout > cas, de variables dont la valeur est inifinie....) dès que je le passe > sous Windows. Un programme compilé/able sous linux ne passera pas forcément facilement sous windows, il y a pas mal de détails qui perturbent la portablité des programmes (d'où l'utilité des tests réalisables par autoconf/automake, et de librairies « portables » comme glib). les cross compileurs utilisent leurs propres «includes» par exemple sous linux stdlib.h sera /usr/include/stdlib.h alors que cross-compilé ce sera /usr/i586-mingw32msvc/include/stdlib.h. scanf, printf, sizeof(int) et autres peuvent avoir des comportements différents. <pthread.h> par exemple n'existe pas sous mingw32... A partir du moment où la compilation se déroule en -Wall sans warnings, il faut en général passer au débogueur et modifier les sources. Il est possible aussi qu'une variable non-initialisée ait une valeur nulle sur une plateforme et aléatoire sur une autre. > Comment puis-je faire pour trouver un i686-pc-mingw32 (puisque la > machine cible est un P4) ? Les compilations avec i586-mingw32msvc... devraient fonctionner sur P4 tout aussi bien que i686-pc-mingw32. > Merci. > > -- > ========================================================== > Aurélien Roux -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré

