[Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet bda
Bonjour à tous,

Je cherche à compiler un gcc pour un vieux ibm aix 4.3 rs6000, je dois donc
faire de la cross compil sur ma sid.

D'après ce que j'ai pu lire, il me faut tout d'abord construire les binutils,
j'en ai récupéré les sources et chercher à les compiler avec l'option
target=rs6000-ibm-aix4.3 lors du configure, le make se passe bien mais je
constate que les binaires compilés sont pour du intel 80386 et non rs6000,
est-ce normal ?

Je me demande donc si il existe un package debian qui contiendrai les binutils
pour rs6000, tout comme il existe pour sparc ?

Si vous avez une bonne doc traitant du sujet en français si possible...*

merci

laurent



Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet bda
Selon Yves Rutschle [EMAIL PROTECTED]:

 On Tue, Jan 13, 2004 at 03:19:24PM +0100, [EMAIL PROTECTED] wrote:
  debian:/usr/local# ls -1 bin rs6000-ibm-addr2line
  rs6000-ibm-ar rs6000-ibm-as rs6000-ibm-c++filt
  rs6000-ibm-cpp rs6000-ibm-gcc rs6000-ibm-gcc-3.3.2
  rs6000-ibm-gccbug rs6000-ibm-gcov rs6000-ibm-ld
  rs6000-ibm-nm rs6000-ibm-objcopy rs6000-ibm-objdump
  rs6000-ibm-ranlib rs6000-ibm-readelf rs6000-ibm-size
  rs6000-ibm-strings rs6000-ibm-strip
  
  Maintenant je ne pas vois trop comment utiliser ce compilo à
  moins de changer plusieurs liens, par exemple au lieu
  d'utiliser le ld du système habituel, je pourrais faire
  un lien du rs6000-ibm-ld vers /usr/bin/ld sans écraser
  l'ancien bien sur en le renommant en .old.
 
 non non, un:
 rs6000-ibm-gcc -o hello hello.c
 
 devrait marcher et utiliser les bons binaires, tant que PATH
 contient /usr/local/bin bien entendu.

Ok ça c'est fait.

 
 Quel genre d'erreur as-tu? As-tu compilé avec la libc d'AIX
 ou bien Glibc?

J'ai d'abord tenté avec les include de mon système, puis j'ai tenté avec le
répertoire /usr/include d'une machine AIX j'ai moins d'erreur mais je crois pas
que ce soit très pro =-(

Lorsque je veux compiler un truc, on me dit que stdio.h n'existe pas, ce qui est
faux bien entendu.

Si je remplace stdio.h par /usr/include/stdio.h là ça passe mais le problème
se répercute sur les include suivants.

Existe t'il un .deb de la libc AIX ?

merci

Laurent




Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet Yves Rutschle
On Tue, Jan 13, 2004 at 03:19:24PM +0100, [EMAIL PROTECTED] wrote:
 debian:/usr/local# ls -1 bin rs6000-ibm-addr2line
 rs6000-ibm-ar rs6000-ibm-as rs6000-ibm-c++filt
 rs6000-ibm-cpp rs6000-ibm-gcc rs6000-ibm-gcc-3.3.2
 rs6000-ibm-gccbug rs6000-ibm-gcov rs6000-ibm-ld
 rs6000-ibm-nm rs6000-ibm-objcopy rs6000-ibm-objdump
 rs6000-ibm-ranlib rs6000-ibm-readelf rs6000-ibm-size
 rs6000-ibm-strings rs6000-ibm-strip
 
 Maintenant je ne vois trop comment utiliser ce compilo à
 moins de changer plusieurs liens, par exemple au lieu
 d'utiliser le ld du système habituel, je pourrais faire
 un lien du rs6000-ibm-ld vers /usr/bin/ld sans écraser
 l'ancien bien sur en le renommant en .old.

non non, un:
rs6000-ibm-gcc -o hello hello.c

devrait marcher et utiliser les bons binaires, tant que PATH
contient /usr/local/bin bien entendu.

Quel genre d'erreur as-tu? As-tu compilé avec la libc d'AIX
ou bien Glibc?

/Y



Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet François TOURDE
Le 12430ième jour après Epoch,
[EMAIL PROTECTED] écrivait:

 Bonjour à tous,

 Je cherche à compiler un gcc pour un vieux ibm aix 4.3 rs6000, je dois donc
 faire de la cross compil sur ma sid.

 D'après ce que j'ai pu lire, il me faut tout d'abord construire les binutils,
 j'en ai récupéré les sources et chercher à les compiler avec l'option
 target=rs6000-ibm-aix4.3 lors du configure, le make se passe bien mais je
 constate que les binaires compilés sont pour du intel 80386 et non rs6000,
 est-ce normal ?

A priori non. Il semblerait que target n'ai pas été pris en compte. Je
ne pense pas qu'il faille d'abord les binutils. Dans le paquet source
gcc il y a (avait?) une doc expliquant point par point comment cross
générer le compilo. Tu devrais rechercher de ce côté là à mon avis.

-- 
Indeed, the first noble truth of Buddhism, usually translated as
`all life is suffering,' is more accurately rendered `life is filled
with a sense of pervasive unsatisfactoriness.'
-- M.D. Epstein



Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet Jean-francois PARIS
 Bonjour à tous,

 Je cherche à compiler un gcc pour un vieux ibm aix 4.3 rs6000, je dois
 donc faire de la cross compil sur ma sid.

 D'après ce que j'ai pu lire, il me faut tout d'abord construire les
 binutils, j'en ai récupéré les sources et chercher à les compiler avec
 l'option target=rs6000-ibm-aix4.3 lors du configure, le make se passe
 bien mais je constate que les binaires compilés sont pour du intel
 80386 et non rs6000, est-ce normal ?


Oui :)

Il y a deux choses à voir quand tu veux faire un compilateur.
_La cible_ : c'est la plateforme pour laquelle le compilateur une fois
compilé, va produire des exécutable
_L'Hote_ : va plateforme sur laquelle va fonctionner le compilateur.

par def la compile de gcc sur x86 produit pour la cible x86 et pour l'hte
x86. un compilo qui tourne sur x68 et qui produit du code x86.
la tu as changé la cible donc tu as produit un compilo qui fonctionne sur
X86 et qui produit pour rs600-aix4.3
tu peux aussi avoir besoin de changer de faire un compilo qui fonctionne
Rs6000 et qui produit pour rs600. par contre si ta machine est si vieille
que çà, c'est dommage. tu pourrais le compilo qui produit du Rs6000 sur ton
x86 et utiliser toute la pêche de ton athlon-mmx 4Ghz pour produire des
binaires pour le rs6000.

jf
-- 
Paris jean-francois  | CLE PUBLIQUE PGPGPG
 | DH/DSS ID: 0xBF4B709E
 | http://mjediyoda.free.fr/
If you use envelopes, why not use encryption?




Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet bda
Selon Jean-francois PARIS [EMAIL PROTECTED]:

 Oui :)
 
 Il y a deux choses à voir quand tu veux faire un compilateur.
 _La cible_ : c'est la plateforme pour laquelle le compilateur une fois
 compilé, va produire des exécutable
 _L'Hote_ : va plateforme sur laquelle va fonctionner le compilateur.
 
 par def la compile de gcc sur x86 produit pour la cible x86 et pour l'hte
 x86. un compilo qui tourne sur x68 et qui produit du code x86.
 la tu as changé la cible donc tu as produit un compilo qui fonctionne sur
 X86 et qui produit pour rs600-aix4.3
 tu peux aussi avoir besoin de changer de faire un compilo qui fonctionne
 Rs6000 et qui produit pour rs600. par contre si ta machine est si vieille
 que çà, c'est dommage. tu pourrais le compilo qui produit du Rs6000 sur ton
 x86 et utiliser toute la pêche de ton athlon-mmx 4Ghz pour produire des
 binaires pour le rs6000.

Merci tout d'abord pour vos réponses.

Je viens en effet de comprendre le fonctionnement.

Et d'ailleurs ma compilation s'est bien déroulée, j'ai donc réussi à construire
un gcc capable de générer du rs6000-ibm.

Il s'est bien installé dans /usr/local, voici ce qui a été généré:

debian:/usr/local# ls -1 bin
rs6000-ibm-addr2line
rs6000-ibm-ar
rs6000-ibm-as
rs6000-ibm-c++filt
rs6000-ibm-cpp
rs6000-ibm-gcc
rs6000-ibm-gcc-3.3.2
rs6000-ibm-gccbug
rs6000-ibm-gcov
rs6000-ibm-ld
rs6000-ibm-nm
rs6000-ibm-objcopy
rs6000-ibm-objdump
rs6000-ibm-ranlib
rs6000-ibm-readelf
rs6000-ibm-size
rs6000-ibm-strings
rs6000-ibm-strip

Maintenant je ne vois trop comment utiliser ce compilo à moins de changer
plusieurs liens, par exemple au lieu d'utiliser le ld du système habituel, je
pourrais faire un lien du rs6000-ibm-ld vers /usr/bin/ld sans écraser l'ancien
bien sur en le renommant en .old.

J'ai fais cette opération pour tous les binaires issus de la compil, et lorsque
je veux compiler quelque chose on me jette.

Je vais tester avec un hello world ;-)

merci beaucoup














Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet Yves Rutschle
On Tue, Jan 13, 2004 at 11:32:17AM +0100, [EMAIL PROTECTED] wrote:
 D'après ce que j'ai pu lire, il me faut tout d'abord construire les binutils,
 j'en ai récupéré les sources et chercher à les compiler avec l'option
 target=rs6000-ibm-aix4.3 lors du configure, le make se passe bien mais je
 constate que les binaires compilés sont pour du intel 80386 et non rs6000,
 est-ce normal ?

Oui: tu a besoin de 2 compilateurs: un cross-compilateur
i386-rs6000, que tu feras tourner sur ton PC; puis, sur ce
PC, en utilisant ce cross-compilateur, un compilateur natif
rs6000-rs6000. La première chaine de compilation est
nécessairement PC, si tu n'as pas de compilateur sur la
rs6000.

 Si vous avez une bonne doc traitant du sujet en français si possible...*

En français, je ne pense pas. En anglais,
http://kegel.com/crosstool/ et
http://crossgcc.billgatliff.com/index.html.

Bon courage, car il en faut.
/Y



Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet Daniel Dchelotte
[EMAIL PROTECTED] a écrit :

|  Quel genre d'erreur as-tu? As-tu compilé avec la libc d'AIX
|  ou bien Glibc?
| 
| J'ai d'abord tenté avec les include de mon système, puis j'ai tenté
| avec le répertoire /usr/include d'une machine AIX j'ai moins d'erreur
| mais je crois pas que ce soit très pro =-(

Es-tu familier avec les étapes classiques :
- compilation de binutils
- compilation d'un cross gcc minimal (seulement le langage C, sans
  les threads) (il faut les entetes du noyau cible)
- cross-compilation de la glibc
- compilation d'un cross-gcc complet, maintenant que la glibc est
  disponible

Yves a donné un lien vers la FAQ de crossgcc, qui permet d'y voir plus clair.

-- Daniel,
  pas vraiment content parce qu'il répond à un message HS
  Suite sur fr.comp.os.unix ?



Re: [Vraiment HS] Cross-compil sur SID

2004-01-13 Par sujet Yves Rutschle
Mince, j'ai effacé ton message précédent par accident.

On Tue, Jan 13, 2004 at 01:20:10PM -0500, Daniel Déchelotte wrote:
 | J'ai d'abord tenté avec les include de mon système, puis j'ai tenté
 | avec le répertoire /usr/include d'une machine AIX j'ai moins d'erreur
 | mais je crois pas que ce soit très pro =-(

ATTENTION
Ne compile ni n'installe SURTOUT pas sans configurer avec
--prefix ; sinon, tu vas mélanger les fichiers du
cross-compilateur avec les fichiers de ton compilateur
d'origine, et casser ton compilateur natif (le gcc normal,
ou i386-linux-gcc).

De façon générale, la marche a suivre est (sans être root,
pas la peine):
* binutils:
  prefix=/home/untel/xgcc
  target=rs6000-blah-blah
  configure --target=$target --prefix=$prefix
  make all install
* Ensuite, installer la libc de d'AIX dans
  $prefix/$target/lib, et les includes dans
  $prefix/$target/sys-include (ou peut-être
  $prefix/$target/include)
* Ensuite gcc, a peut pres de la même façon que binutils.

 - cross-compilation de la glibc

Pas nécessairement, a priori il est plus propre d'utiliser
la libc native du système -- sinon, la RS6000 devra tourner
avec 2 libc différentes.

   Suite sur fr.comp.os.unix ?

sur [EMAIL PROTECTED], la construction de gccs
croisés est une affaire de spécialistes (après 3 ans, je ne
comprend toujours pas tout :-) ).

/Y