Re: [mingw32] pas de i686-pc-mingw32 à dispo ?
Le lundi 15 janvier 2007 09:00, Aurelien Roux a écrit : Le Fri, Jan 12, 2007 at 04:39:22PM +0100, Eric DECORNOD a écrit : Il me semble que spécifier --target=i586-mingw32msvc comme option à ./configure suffit pour utiliser les outils paquet mingw32. En fait, j'ai installé la version packagée. Je parlais de nouvelles compilations, pas de mingw32 en lui-même. [...] 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... OK. Merci beaucoup pour ces infos. Cela dit, j'utilise un nombre de librairies très limité : stdio stdlib math En revanche, j'utilise en effet des sizeof (allocations dynamiques) et des scanf printf (et ça pourrait bien être dans le scanf qu'un problème se pose). Mingw32 utilise des API de windows et notament MSVCRT qui ont des différences notables avec celles que l'ont utilise habituellement sous linux. Par exemple : http://www.mingw.org/MinGWiki/index.php/C99 Ainsi il faut se référer à la documentation windows plustôt qu'à celle de gcc sous linux ; et user/abuser des #ifdef ... 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. OK. Le souci est que le programme a besoin de nombreuses données en entrée, et le déboggage est très très long et compliqué. D'où l'intérêt des assertions (déboguage ciblé) des tests unitaires (isolation) et tests de recettes. Il est possible aussi qu'une variable non-initialisée ait une valeur nulle sur une plateforme et aléatoire sur une autre. J'y ai pensé. A priori, je n'ai pas de variable non-initialisée, mais bon, après... 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. OK, donc ça ne vient pas de ça. Merci beaucoup ! de rien -- == Aurélien Roux Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré
Re: [mingw32] pas de i686-pc-mingw32 à dispo ?
Aurelien Roux wrote: 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 Pourquoi ne pas utiliser le paquet ? mingw32: Installé : 3.4.5.20060117.1.dfsg-2 Candidat : 3.4.5.20060117.1.dfsg-2 Table de version : *** 3.4.5.20060117.1.dfsg-2 0 400 ftp://ftp.fr.debian.org etch/main Packages 300 ftp://ftp.fr.debian.org unstable/main Packages 100 /var/lib/dpkg/status Comment puis-je faire pour trouver un i686-pc-mingw32 (puisque la machine cible est un P4) ? pas dans le paquet en tout cas : dpkg -L $( dpkg-query -f='${Package} ' --show '*mingw*' ) | grep -F 686 ne me renvoie rien. mc -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: [mingw32] pas de i686-pc-mingw32 à dispo ?
Aurelien Roux wrote: J'ai suivi le tutoriel de la page suivante : www.dumbbell.fr/howto/win32-cross-compilation.fr.html C'est justement ce que j'ai fait alors ne dis pas que J'ai suivi le tutoriel de la page suivante :) -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: [mingw32] pas de i686-pc-mingw32 à dispo ?
Aurelien Roux wrote: Arf, si, puisqu'ils disent : Si votre OS a un système de paquets ou de Ports, alors passez directement à la rubrique Les essais ;p arf ... tiens nous au courant (en tout cas, moi ca m'intéresse). mc -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: [mingw32] pas de i686-pc-mingw32 à dispo ?
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é