<?xml version="1.0"?>
<rss xmlns:php="http://php.net/xsl" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Compilation croisée facile pour Raspberry Pi - Chicoree</title><link>http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi</link><atom:link href="http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi?action=toFeed" rel="self" type="application/rss+xml"/><description><![CDATA[La Raspberry Pi est une plate-forme embarquée de faible coût basée sur un micro-contrôleur ARM. Elle peut tourner sous Linux et 
supporte donc facilement les outils de développement classiques comme gcc. Le problème, c'est que, sur ARM comme sur n'importe quelle autre plate-forme, compiler, ça prend du temps (processeur) et ça consomme de la mémoire. Deux ressources qui sont limitées sur la Raspberry Pi – surtout si on les compares à celle de n'importe quel ordinateur portable un peu récent.
La solution à ce problème s'appelle cross-compiling ou compilation croisée en français. Il s'agit simplement de compiler sur une machine (mon portable quad-core) pour une autre (la Raspberry Pi). En théorie, ce n'est pas compliqué. En pratique, c'est autre chose, car pour compiler le compilateur croisé vous aurez entre autres besoin d'un compilateur hôte, d'outils pour la cible (binutils), ou encore des bibliothèques C adaptées (libc). Cette dernière phrase un peu incompréhensible juste pour vous dire que les choses ne sont pas si évidentes.
Heureusement, des solutions existent pour faciliter la vie du cross-developper. L'une d'entre elles est crosstool-NG. Son rôle? Vous fabriquer sur mesure les outils nécessaires pour faire de la compilation croisée. En l'occurrence, dans le cas qui m'intéresse ici, les outils nécessaires pour compiler sur un PC x86-64 pour une plate-forme ARM. Voici donc comment utiliser crosstool-ng pour faire de la compilation croisée facile pour Raspberry Pi.
]]></description><item><title>1 Installer crosstool-ng</title><link>http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi#Installer_crosstool-ng</link><description><![CDATA[<p>Pour utiliser <i>crosstool-ng</i>, vous devez déjà avoir sur votre machine quelques outils de développement natifs (<tt><a>gcc</a></tt>, <tt><a>make</a></tt> en particulier), ainsi qu'une connexion Internet valide puisque des fichiers vont être téléchargés <i>à la volée</i>. J'ai recensé ci-dessus les paquets que j'ai dû installer sur une machine Linux Debian Squeeze <i>minimale</i> pour y faire fonctionner <i>crosstool-NG 1.17.0</i> (la dernière version stable au moment où j'écris). Je ne saurais vous garantir que d'autres paquets ne sont pas nécessaires ou que la liste ne risque pas d'évoluer rapidement. Mais c'est je pense une bonne base.
</p>]]></description></item><item><title>2 Configurer crosstool-ng</title><link>http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi#Configurer_crosstool-ng</link><description><![CDATA[<p>L'installation de <i>crosstool-NG</i> a seulement installé sur votre machine les scripts nécessaires pour fabriquer les outils de compilation croisée. L'étape suivante va consister à expliquer à <i>crosstool-NG</i> de quelle <i>toolchain</i> – c'est à dire de quels outils – vous avez besoin. Par exemple, en précisant l'architecture cible ou la version du compilateur qui vous intéresse. Les options sont nombreuses. Et pour les sélectionner l'outil propose une interface <i>menuconfig</i> qui vous sera un peu familière si vous avez déjà compilé un noyau Linux:
</p>]]></description></item><item><title>3 Construire la toolchain</title><link>http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi#Construire_la_toolchain</link><description><![CDATA[<p>Une fois l'étape de configuration terminée, c'est à <i>crosstool-NG</i> de jouer. En principe, sans intervention humaine. À l'invite du shell, tapez la commande suivante:
</p>]]></description></item><item><title>4 Tester votre toolchain</title><link>http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi#Tester_votre_toolchain</link><description><![CDATA[<p>C'est le moment le plus excitant de l'affaire: tester la <i>toolchain</i>:
</p>]]></description></item><item><title>5 Ressources</title><link>http://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi#Ressources</link><description/></item></channel></rss>
