Logiciels Libres et Systèmes Embarqués


6.3. µClibC

6.3.1. Présentation

µ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.

6.3.2. Installation

µ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

6.3.3. Outils de développement

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