[Vraiment HS] Cross-compil sur SID
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
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
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
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
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
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
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
[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
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