µClibC est une bibliothèque C (sous LGPL) spécialement conçue pour les systèmes embarqués. Elle est bien plus petite que la GlibC mais supporte presque toutes les applications faites pour cette dernière. Le développement de µClibC est assuré en grosse partie par la communauté du libre et il existe même un support payant fourni par les responsables du projet.
µClibC étant complètement configurable, je vais prendre les choix par défauts pour cette démonstration. La configuration se fait à l'aide d'un menu, comme pour le noyau Linux :
bash# make menuconfig
Le menu de configuration est composé des thèmes suivants :
Target Architecture (powerpc) Target Architecture Features and Options General Library Settings Networking Support String and Stdio Support Big and Tall Library Installation Options
Il suffit de choisir l'architecture :
Target Architecture (powerpc)
Et de préciser qu'il n'y a pas de co-processeur flottant :
Target Architecture Features and Options : [ ] Target CPU has a floating point unit
Comme lors de l'installation des outils de développement, il faut récupérer les fichiers d'en-têtes du noyau :
bash# cp -r $LINUX/include/linux SYSROOT/usr/include/ bash# cp -r $LINUX/include/asm-ppc SYSROOT/usr/include/asm bash# cp -r $LINUX/include/asm-generic SYSROOT/usr/include/
Puis, il faut préciser dans le menu de configuration où sont situés ces fichiers :
(/opt/powerpc-linux-uclibc/sysroot/usr/) Linux kernel header location
Enfin, il faut préciser où sera installée cette bibliothèque :
(/opt/$(TARGET_ARCH)-linux-uclibc/) uClibc runtime library directory (/opt/$(TARGET_ARCH)-linux-uclibc/usr/) uClibc development env. directory
A présent, on peut la compiler et l'installer :
bash# make CROSS=powerpc-405-linux-gnu- bash# make install
Pour utiliser cette bibliothèque C, il faut installer une nouvelle suite d'outils de développement. Dans un premier temps, on doit modifier GCC et les Binutils. Il faut donc récupérer les correctifs sur le site officiel de µClibC, en prenant soin de choisir les bonnes versions :
bash# cd binutils-2.16 bash# patch -p1 <../Patches/binutils-2.16/100-uclibc-conf.patch bash# patch -p1 <../Patches/binutils-2.16/110-uclibc-libtool-conf.patch bash# cd ../gcc-3.4.4 bash# patch -p1 <../Patches/gcc-3.4.4/100-uclibc-conf.patch
Il ne reste plus qu'à installer les Binutils et GCC comme nous l'avions fait précédemment (cf section 3.4 et 3.7). Cependant, cette fois nous sommes dans la configuration suivante :
- TARGET = powerpc-linux-uclibc
- PREFIX = /opt/powerpc-linux-uclibc
- SYSROOT = /opt/powerpc-linux-uclibc/sysroot