Comment construire une chaîne d'outils ARM GCC ?
Le GCC (GNU Compiler Collection) est un compilateur GNU qui se compose d'un paquet de logiciels libres , capables de compiler les langages C, C++, Java, Ada et Fortran. Le GCC est destiné aux logiciels libres. Le Kernel Linux est étroitement lié aux fonctionnalités de GCC. Dans cet article on va voir les méthodes les plus usuelles pour la compilation ARM GCC.
Mise en route
Avant de décrire les méthodes de compilations, il faut avoir les éléments suivants :
– Une machine performante,
– Une plateforme Linux,
– Un outil de compilation GCC.
Il faut aussi disposer d’un outil "Autoconf" installé dans la machine serveur. Cet outil génère les fichiers (Make) qui ont le rôle d’automatiser la compilation des sources d’un paquet.
Les étapes de la création d’une chaine
Avant toute chose, utiliser le CVS (Concurrent Versions System) qui assure la faculté d’un groupe à travailler en temps réel sur les mêmes fichiers. Les étapes de la création d’une chaine sont : – Etape 1 : compiler le paquet "binutils", – Etape 2 : spécifier l’architecture ARM, – Etape 3 : produire la bibliothèque Glibc pour ARM, – Etape 4 : utiliser le "bootstrap GCC" pour produire la bibliothèque Glibc, – Etape 5 : intégrer la bibliothèque C pour ARM, – Etape 6 : compiler les bibliothèques GMP et MPFR pour ARM, – Etape 7 : compiler le GCC avec les librairies précédentes.
La génération de la chaine "from scratch"
Cette méthode est tirée du livre "Pro Linux Embedded Systems" La compilation de la chaine peut être effectuée dans un serveur Ubuntu 11.04 (64 bits). Pour la génération de la chaine "from scratch", il faut respecter l’ordre des étapes précédentes. Il existe des Patches pour améliorer la compilation en fonction de la structure arm et de l' arm toolchain. – La dernière version Kernel Linux est téléchargeable à partir du lien : [[Kernel.org|http://www.kernel.org/pub/linux/kernel/v2.6/]]. – Les compilateurs intermédiaires sont téléchargeables à partir du lien : F[[tp.gnu.org|http://ftp.gnu.org/gnu/]].
Commandes de compilation
Dans le terminal entrer les commandes suivantes :
Compilation du Binutils
mkdir $BUILDDIR/binutils
cd $BUILDDIR/binutils ../../sources/binutils-2.20/configure
\ --disable-werror
\ --build=$BUILDMACH
\ --prefix=$INSTALLDIR
\ --with-sysroot=$SYSROOTDIR
\ --target=$TARGETMACH
make make install
Compiler l’entête du noyau
cd $SRCDIR/linux-2.6.28.3
make mrproper
make ARCH=arm kb9202_defconfig
make ARCH=arm headers_check
make ARCH=arm INSTALL_HDR_PATH=$INSTALLDIR/sysroot/usr headers_install