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=yesest 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).
--hostest l'hôte où sera installé la GlibC, donc dans notre cas c'est le
powerpc-405-linux-gnu.--prefix=/usrest 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/libet les autres dans le répertoire/usr/lib(relativement à$SYSROOT).--disable-sanity-checkspermet de ne pas inclure le support de la bibliothèque pthreads car cela n'est pas nécessaire pour la compilation de GCC.
--with-headerspré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=yespré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_rootprécise la racine du système GNU/Linux pour PowerPC 405.
install-headersindique 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 ../..