Logiciels Libres et Systèmes Embarqués


Chapitre 3. Installation des outils de développement GNU

3.1. Introduction

Nous allons voir dans ce chapitre l'installation des outils de développement GNU à partir des sources. Dans notre cas, cette suite d'outils constitue un environnement de développement croisé [10], car l'architecture où les programmes sont exécutés, est différente de l'architecture où ils sont compilés. Il faut savoir qu'il est très rare de compiler cette suite d'outils du premier coup et qu'il est encore plus rare de ne pas avoir à la modifier. Cette complexité croît lorsqu'on ajoute des fonctionnalités (C++, Threads, ...) ou que l'on souhaite avoir un système sur mesure. Monsieur Kegel, un ingénieur de Google spécialisé sur le sujet, a très bien résumé ce challenge :

Building a gcc / glibc cross-toolchain for use in embedded systems development used to be a scary prospect, requiring iron will, days if not weeks of effort, lots of Unix and Gnu lore, and sometimes willingness to take dodgy shortcuts.

que je traduirai par :

Compiler un environnement GNU de développement croisé pour les systèmes embarqués est considéré comme un projet effrayant, nécessitant des nerfs d'acier, des jours voire des semaines d'efforts, beaucoup de connaissances Unix et Gnu, et parfois beaucoup de volonté pour prendre des décisions épineuses.

On peut alors se demander pourquoi ne pas utiliser une suite d'outils déjà compilés, ou bien pourquoi ne pas utiliser le fameux script crosstool de Monsieur Kegel. Je dirais tout d'abord que la curiosité n'est pas un vilain défaut : connaître les mécanismes de la compilation peut être une source d'enrichissement pour les développeurs. Mais la raison principale est la maîtrise et l'indépendance du cycle de développement. En effet, imaginons que le fournisseur des outils de compilation arrête son activité, ou bien qu'il ne soit pas capable d'assurer une mise à jour régulière : cela mettrait en danger la pérennité des logiciels de SMP[8] ou priverait les développeurs des dernières fonctionnalités.

Enfin, il faut savoir que les outils de développement GNU fournis avec EDK ne peuvent compiler que des programmes standalones[9] qui sont au format ELF/EABI. Il est donc impossible d'utiliser ces outils pour compiler des applications fonctionnant sous Linux, qui sont au format ELF/Linux. Les outils de développement GNU qui seront installés dans ce chapitre peuvent produire du code dans les deux formats.

Avant d'installer cet environnement, nous allons mettre en place tout le nécessaire. Puis, nous verrons comment installer les outils de base, c'est à dire l'assembleur et l'éditeur de liens[10]. Ensuite, nous aborderons l'installation du compilateur et de la bibliothèque C. Il s'agit de la partie la plus compliquée car il existe des dépendances complexes à gérer. Enfin, nous conclurons par la réalisation d'un test.



[8] SMP assure une pérennité pour ses équipements de vingt ans.

[9] sans système d'exploitation.

[10] "linker" en anglais.