La chose la plus simple pour configurer un compilateur crois� est de t�l�charger les binaires. Pour les machines Linux/i386 et les cibles "big endian", les paquetages n�cessaires sont :
binutils-mips-linux-2.8.1-1.i386.rpm egcs-c++-mips-linux-1.0.3a-1.i386.rpm egcs-g77-mips-linux-1.0.3a-1.i386.rpm egcs-libstdc++-mips-linux-2.8.0-1.i386.rpm egcs-mips-linux-1.0.3a-1.i386.rpm egcs-objc-mips-linux-1.0.3a-1.i386.rpmEt voici la liste des paquetages pour les cibles "little endian" :
binutils-mipsel-linux-2.8.1-1.i386.rpm egcs-c++-mipsel-linux-1.0.3a-1.i386.rpm egcs-g77-mipsel-linux-1.0.3a-1.i386.rpm egcs-libstdc++-mipsel-linux-2.8.0-1.i386.rpm egcs-mipsel-linux-1.0.3a-1.i386.rpm egcs-objc-mipsel-linux-1.0.3a-1.i386.rpmIl n'est pas n�cessaire de tous les installer ; la plupart des personnes peuvent oublier les compilateurs C++, Objective C et Fortran 77. Les binaires pour Intel ont �t� link� avec la GNU libc 2.1, donc vous devez l'installer aussi pour une mise � jour.
Avant toute chose, t�l�chargez les paquetages des sources et les patches :
Vous devez choisir un r�pertoire pour l'installation. Je ferais r�f�rence � ce r�pertoire par <prefix>. Pour �viter certain probl�me, il vaut mieux utiliser la m�me valeur pour <prefix> que pour le gcc natif. Par exemple, si votre gcc est install� dans /usr/bin/gcc alors choisissez /usr pour <prefix>. Vous devez utiliser la m�me valeur de <prefix> pour tous les paquetages que vous allez installer.
Pendant l'installation, il vous faudra environ 31 Mo d'espace disque pour binutils ; pour l'installation il vous faudra 7 Mo d'espace disque sur la partition contenant <prefix>. La compilation d'egcs n�cesite 71 Mo et 14 Mo pour l'installation. GNU libc n�cessite 149 Mo d'espace disque pendant la compilation et 33 Mo pour l'installation. Notez que ces quantit�s ne sont que des indications et peuvent varier significativement pour diff�rentes architectures de processeurs et de syst�mes d'exploitation.
Une des fonctionnalit�s particuli�res des architectures MIPS est que tous les processeurs sauf le R8000 peuvent �tre configur� pour tourner en mode gros ou petit boutien (big ou little endian). L'ordre des octets indique la mani�re dont le processeur stocke en m�moire les nombres sur plusieurs octets. Les machines gros boutiens stockent l'octet de poids le plus fort � l'adresse la plus basse alors que les machines petits boutiens les stockent � l'adresse la plus haute. Pensez � cela lors de l'�criture de nombres sur plusieurs octets de gauche � droite ou vice-versa.
Pour configurer correctement votre compilateur crois�, vous devez conna�tre l'ordre des octets du compilateur crois� cible. Si vous ne le savez pas d�j�, consultez la section Hardware Platforms pour l'ordre des octets des machines.
La plupart des paquetages bas�s sur autoconf supportent plusieurs architectures et syst�mes d'exploitation diff�rents. Pour diff�rencier chaque configuration, les noms sont construits selon les sch�mas <cpu>-<entreprise>-<SE> voire m�me <cpu>-<entreprise>-<noyau>-<SE>. Selon ces sch�mas, les noms de configuration de Linux/MIPS sont mips-unknown-linux-gnu pour les gros boutiens ou mipsel-unknown-linux-gnu pour les petits boutiens. Ces noms sont un peu long et il est permis de les abr�ger en mips-linux ou mipsel-linux. Vous devez utiliser les m�mes noms de configuration pour tous les paquetages qui comprennent votre environnement de compilateur crois�. Ainsi, bien que les autres noms comme mips-sni-linux ou mipsel-sni-linux sont les noms de configuration l�gaux, utilisez linux-mips ou mipsel-linux � la place ; ce sont les noms de configuration connu par les autres paquetages comme les sources du noyau Linux, autrement il devra �tre modifi� pour les compilations crois�es.
Je ferais maintenant r�f�rence au nom de configuration cible par <target>.
Ceci est la premi�re partie et la plus simple - du moins si vous essayez de faire l'installation sur un quelconque UNIX sain. Entrez simplement dans un r�pertoire avec suffisamment d'espace disque et faites ce qui suit :
gzip -cd binutils-<version>.tar.gz | tar xf - cd binutils-<version> patch -p1 < ../binutils-<version>-mips.patch ./configure --prefix=<prefix> --target=<target> make CFLAGS=-O2 make installCela fonctionne tr�s bien habituellement. Sur certaines machines qui utilise GCC 2.7.x comme compilateur, on raporte des dump core. C'est un bug connu de GCC et peut �tre r�solu en mettant GCC � niveau � la version 2.8.1 ou en mettant � niveau egcs.
Des personnes poss�dent un vieux fichier d'en-t�te assert.h install�, probablement des restes d'une ancienne installation d'un compilateur crois�. Ce fichier a pour cons�quence de faire �chouer silencieuement les scripts autoconf ; il n'est jamais n�cessaire et il a �t� uniquement install� � cause d'un bug dans des versions plus anciennes de GCC. V�rifiez si le fichier <prefix>/<target>/include/assert.h existe dans votre installation. Si c'est le cas, effacez-le : il n'aurait jamais d� �tre install� pour une quelconque version du compilateur crois� et causera des perturbations.
L'installation des sources du noyau est simple. Placez-les simplement dans un r�pertoire de votre choix et configurez-les. Leur configuration est n�cessaire pour que les fichiers qui sont g�n�r�s par la proc�dure soient install�s. Assurez-vous que vous ayez activ� CONFIG_CROSSCOMPILE vers la fin du processus de configuration. L'unique probl�me que vous pourriez rencontrer est d'avoir besoin d'installer des programmes GNU n�cessaires comme bash ou devoir �craser les versions de programmes fournies par le constructeur en pla�ant les versions GNU plus t�t dans la variables PATH.
Maintenant, allez dans le r�pertoire <prefix>/<target>/include et cr�ez deux liens symboliques nomm�s asm et linux pointant respectivement sur include/asm et include/linux dans vos sources du noyau qui viennent juste d'�tre install�s et configur�s. Ils sont n�cessaires pour que les fichiers d'en-t�tes n�cessaires soient trouv�s pendant l'�tape suivante.
Maintenant la partie la moins rigolote commence : il existe un soit-disant probl�me d'amor�age. Dans notre cas, cela signifie que le processus d'installation d'egcs n�cessite une glibc pr�c�demment install�e, mais nous ne pouvons pas compiler glibc parce que nous ne poss�dons pas encore de compilateur crois�. Heureusement, vous devrez uniquement passer par l� lorsque vous installerez un compilateur crois� pour la premi�re fois. Plus tard, lorsque vous aurez d�j� install� la glibc les choses seront plus ais�es. Mais pour l'instant faites :
gzip -cd egcs-1.0.3a.tar.gz | tar xf - cd egcs-<version> patch -p1 < ../egcs-1.0.3a-mips.patch ./configure --prefix=<prefix> --with-newlib --target=<target> make SUBDIRS="libiberty texinfo gcc" ALL_TARGET_MODULES= \ CONFIGURE_TARGET_MODULES= INSTALL_TARGET_MODULES= LANGUAGES="c"Notez que nous n'avons pas d�lib�rement compil� gcov, protoize, unprotoize et les biblioth�ques. Gcov n'a pas de sens dans un environnement de compilateur crois� et protoize et unprotoize �craserait carr�ment vos programmes natifs - c'est un bug dans les makefiles de gcc. Enfin, nous ne pouvons compiler les biblioth�ques parce que nous n'avons pas encore install� la glibc. Si tout ce passe avec succ�s, lancez l'installation avec :
make SUBDIRS="libiberty texinfo gcc" INSTALL_TARGET_MODULES= \ LANGUAGES="c" installSi vous d�sirez le compilateur crois� pour compiler le noyau, vous avez finis. La compilation crois�e de la libc est maintenant n�cessaire pour pouvoir compiler les applications utilisateurs.
Simplement pour s'assurer que ce que vous avez fait jusqu'ici fonctionne, vous devriez maintenant essayer de compiler le noyau. Entrez dans les sources du noyau MIPS et tapez "make clean; make dep; make". Si tout se d�roule bien, faites un "make clean" une fois de plus pour nettoyer les sources.
Faites :
gzip -cd glibc-2.0.6.tar.gz | tar xf - cd glibc-2.0.6 gzip -cd glibc-crypt-2.0.6.tar.gz | tar xf - gzip -cd glibc-localedata-2.0.6.tar.gz | tar xf - gzip -cd glibc-linuxthreads-2.0.6.tar.gz | tar xf - patch -p1 < ../glibc-2.0.6-mips.patch mkdir build cd build CC=<target>-gcc BUILD_CC=gcc AR=<target>-ar RANLIB=<target>-ranlib \ ../configure --prefix=/usr --host=<target> \ --enable-add-ons=crypt,linuxthreads,localedata --enable-profile makeVous avez maintenant une GNU libc compil�e qui doit encore �tre install�e. Ne faites pas un simple make install. Cela �craserait vos fichiers syst�me de votre machine par les fichiers sp�cifiques de Linux/MIPS avec des effets d�sastreux. A la place, installez la GNU libc dans un autre r�pertoire choisie arbitrairement <somedir> � partir du quel nous d�placerons dans le r�pertoire cible actuel les parties que nous avons besoin pour la compilation crois�e :
make install_root=<somedir> installMaintenant p�n�trez dans <somedir> et installez finalement la GNU libc manuellement
cd usr/include find . -print | cpio -pumd <prefix>/<target>/include cd ../../lib find . -print | cpio -pumd <prefix>/<target>/lib cd ../usr/lib find . -print | cpio -pumd <prefix>/<target>/libLa GNU libc contient aussi une vaste documentation en ligne. Votre syst�me doit d�j� poss�der une version de cette documentation, donc si vous ne d�sirez pas installer les pages infos ce qui vous sauvera un peu moins d'un mega octets, ou si vous les avez d�j� install�s, sautez la prochaine �tape :
cd ../info gzip -9 *.info* find . -name \*.info\* -print | cpio -pumd <prefix>/infoSi vous n'avez pas de programme d'amorce, votre installation n'est pas finis
La premi�re tentative de compilation d'egcs a �t� stopp�e par l'absence de la GNU libc. Puisque nous avons maintenant la libc d'install�e, nous pouvons reconstruire egcs mais cette fois de fa�on aussi compl�te que l'installation d'un compilateur crois� puisse l'�tre :
gzip -cd egcs-<version>.tar.gz | tar xf - cd egcs-<version> patch -p1 < ../egcs-1.0.3a-mips.patch ./configure --prefix=<prefix> --target=<target> make LANGUAGES="c c++ objective-c f77"Comme vous pouvez le constater, la proc�dure est identique que la premi�re fois sauf que nous avons laiss� tomb� l'option --with-newlib. Cette option �tait n�cessaire pour enlever l'arr�t de la compilation de libgcc � cause de l'absence de la libc. Maintenant lancez l'installation avec :
make LANGUAGES="c c++ objective-c f77" installVous avez presque termin�. Si vous pensez ne pas avoir besoin des compilateurs Objective C ou F77, vous pouvez les enlever des commandes ci-dessus ; chacune vous sauvera environ 3 Mo. Ne compilez pas gcov, protoize ou unprotoize.
Origin 200 tournant sous IRIX 6.5.1 peut se planter lors d'un "make depend" dans les sources de noyau Linux. IRIX 6.5 sur un Indy et IRIX 6.5.4 sur un Origin 200 sont connus pour fonctionner correctement. Tout rapports pour aider � isoler le probl�me de configuration est la bienvenue.
Les Unix bas�s sur le standard System V comme IRIX ou Solaris ont des valeurs limites maximum sur les nombres d'argument pouvant �tre pass�s � un processus enfant qui peuvent �tre d�pass�s lors de la compilation crois�e de logiciels comme le noyau Linux ou la GNU libc. Pour les syst�mes IRIX, la taille maximum de la liste d'arguments vaut par d�faut 20 Ko alors la valeur par d�faut pour Linux est d'au moins 128 Ko. Cette taille peut �tre modifi� par la commande "systune ncargs 131072" sous root.
La compilation de GDB comme debugeur crois� a uniquement d'int�r�t pour les d�veloppeurs du noyau ; leur GDB peut leur sauver la vie. Une telle configuration de debugage distant est compos�e de deux parties : le debugeur GDB distant fonctionnant sur une machine et la machine cible faisant tourner le noyau Linux/MIPS qui doit �tre d�bugu�. Les machines sont habituellement inter-connect�es par une ligne s�rie. Le noyau de la machine cible doit �tre �quip� d'un "embryon de d�bugage" qui communique avec le GDB de la machine h�te en utilisant le protocole s�rie distant.
Suivant l'architecture cible, il vous faudra impl�menter l'embryon de d�bugage vous-m�me. En g�n�ral, vous devrez uniquement �crire des routines s�ries tr�s simple. La t�che est, de plus, simplifi�e par le fait que la plupart des machines utilisent des p�riph�riques s�ries semblables, en g�n�ral bas� sur le 8250, le 16450 ou des d�riv�s.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:31