Re: [mingw32] pas de i686-pc-mingw32 à dispo ?

2007-01-15 Par sujet Eric DECORNOD
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 ?

2007-01-12 Par sujet Marc Chantreux

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 ?

2007-01-12 Par sujet Marc Chantreux

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 ?

2007-01-12 Par sujet Marc Chantreux

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 ?

2007-01-12 Par sujet Eric DECORNOD
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é