Les fichiers d'en-tête du noyau Linux sont nécessaires pour compiler les Binutils. On peut récupérer les sources du noyau grâce à BitKeeper, en tapant les commandes suivantes :
bash# bk clone -rv2.4.23_linuxppc_2_4 bk://ppc.bkbits.net/linuxppc_2_4 bash# cd linuxppc_2_4 bash# bk -r edit
Le noyau doit maintenant être configuré :
bash# cd linuxppc_2_4 bash# make ARCH=ppc menuconfig bash# make dep
Pour le moment, il est inutile de s'attarder sur la configuration, seul le type du processeur est nécessaire. Il faut donc choisir "40x" dans le champ "Processor Type" du menu "Platform support", puis quitter en sauvant la configuration. Il ne reste alors plus qu'à copier les fichiers d'en-tête dans l'arborescence de ce système :
bash# cp -r include/linux $SYSROOT/usr/include bash# cp -r include/asm-ppc $SYSROOT/usr/include/asm bash# cp -r include/asm-generic $SYSROOT/usr/include/ bash# cd ..
Etant la plus standard, j'ai choisi GlibC comme bibliothèque C. De plus GCC dépend fortement de cette dernière. J'ai aussi choisi d'utiliser la bibliothèque "Linux Threads" (pthreads) pour la gestion des processus légers[11]. Pour le moment, seul les fichiers d'en-tête sont nécessaires pour compiler GCC, donc la commande suivante suffit :
bash# tar -xvjf glibc-2.3.5.tar.bz2 bash# cd glibc-2.3.5 bash# tar -xvjf ../glibc-linuxthreads-2.3.5.tar.bz2 bash# mkdir -p build-glibc-headers; cd build-glibc-headers bash# libc_cv_ppc_machine=yes \ ../configure --host=$TARGET \ --prefix=/usr \ --disable-sanity-checks \ --with-headers=$SYSROOT/usr/include
libc_cv_ppc_machine=yes
est une astuce. Cela permet d'éviter l'erreur : « a version of binutils that supports .machine 'altivec' is needed », car le PowerPC 405 n'a pas d'Altivec (co-processeur vectoriel).
--host
est l'hôte où sera installé la GlibC, donc dans notre cas c'est le
powerpc-405-linux-gnu
.--prefix=/usr
est encore une astuce. La GlibC s'installe par défaut dans le répertoire
/usr/local
, mais grâce à cette option la GlibC installe les bibliothèques indispensables dans le répertoire/lib
et les autres dans le répertoire/usr/lib
(relativement à$SYSROOT
).--disable-sanity-checks
permet de ne pas inclure le support de la bibliothèque pthreads car cela n'est pas nécessaire pour la compilation de GCC.
--with-headers
précise où sont stockés les fichiers d'en-tête du noyau.
Il ne reste alors plus qu'à compiler :
bash# libc_cv_ppc_machine=yes \ make cross-compiling=yes \ install_root=$SYSROOT install-headers
cross-compiling=yes
précise que l'on met en place un système de développement croisé. Cela permet surtout de ne pas compiler et d'exécuter les programmes de tests qui, bien évidemment, ne fonctionneront pas sur notre ordinateur.
install_root
précise la racine du système GNU/Linux pour PowerPC 405.
install-headers
indique que l'on souhaite copier les fichiers d'en-tête.
Il manque deux fichiers dans l'installation des fichiers d'en-tête, nous devons donc les copier nous-même :
bash# cp ../include/gnu/stubs.h $SYSROOT/usr/include/gnu bash# cp bits/stdio_lim.h $SYSROOT/usr/include/bits bash# cd ../..