Dans le cadre du développement de projets pour l'embarqué, la principale contrainte rencontrée par les développeurs est la mise en place d'un environnement de compilation croisée, et son utilisation.
A priori, l'installation d'une chaîne de compilation croisée s'effectue une seule fois, et on peut l'oublier par la suite. Son utilisation même, en revanche, dépend fortement des projets à compiler. En effet, bien que l'on trouve de plus en plus de projets pour l'embarqué, il n'est pas rare d'avoir besoin d'un quelconque programme, dont les sources n'ont pas été structurées pour une compilation croisée.
Pourtant, il aurait suffit que les Makefiles du projet en question aient été écrits en tenant compte de variables « standardisées » telles que ARCH, CROSS ou CROSS_COMPILE. Pour de petits projets, il est facile de réécrire les Makefiles en ce sens. Mais sur des projets de plus grande envergure, ou ayant des scripts de compilation bien plus complexes, la tâche devient tout de suite gargantuesque.
Une solution serait de compiler ces vilains canards directement sur la cible. Il va de soi que l'installation d'un environnement de développement complet sur une cible dédiée à l'embarqué est assez incongrue. D'autre part, la puissance des processeurs visés est généralement bien en deçà des possibilités offertes par les stations de travail modernes.
Scratchbox se propose donc d'utiliser un environnement chrooté, en utilisant qemu, afin de permettre la compilation d'un projet comme s'il tournait directement sur la plate-forme cible.
Nous allons présenter l'installation de cet outil, sa configuration et sa mise en oeuvre. En guise d'exemple de code à compiler, nous prendrons Kerberos5, connu pour poser des problèmes à la cross-compilation.
Hugues HIEGEL, Ingénieur OS4i.
Télécharger l'article technique :
25.11.2009