Vous êtes sur la page 1sur 2

la « cross compilation » ou compilation croisée est le fait de compiler un programme sur une

architecture qui n’est pas celle de l’architecture cible. Exemple : vous êtes sur un PC avec un
processeur de type Intel en 64bits et vous souhaitez compiler pour un RaspberryPi qui utilise
une architecture 32 bits de type ARM.
Un compilateur prend un fichier source dans un langage et le convertit dans un autre langage :
• un langage assembleur
ou
• un langage machine

La compilation croisée permet de créer des exécutables depuis une certaine architecture pour une
autre (Linux 32bits / 64bits).

Pour linux, il existe aussi des paquets :

• lib64(32) gcc1
• libc6-dev-amd64(i386).

Sous GNU/Linux, les logiciels doivent être compilés avant de pouvoir être utilisés.

L'ordinateur est incapable de comprendre directement du code source : il doit donc être « traduit » de
façon à ce que la machine puisse l'interpréter.

« Compilation » est le nom d'une procédure permettant de transformer du code source, un ensemble
d'instructions compréhensibles par les programmeurs, en code binaire, compréhensible uniquement
par votre ordinateur.

Sous Microsoft® Windows®, par exemple, il n’est pratiquement jamais requis de votre part que vous
compiliez vos logiciels, les éditeurs de programmes proposant des installateurs « install.exe » qui
contiennent le programme compilé et une procédure qui copie les fichiers du programme au bon
endroit sur votre disque dur.

Or, sous Linux, il n’existe pas d’ « install.exe ».

Un procédé plus simple et convivial a été créé pour éviter à l'utilisateur moyen de devoir compiler :
c'est le cas, entre autres, du système de gestion de paquets APT.

Par défaut, Ubuntu n'inclut pas tous les outils nécessaires pour procéder à la compilation de logiciels
et bibliothèques. Ces outils peuvent toutefois être installés à l'aide de Synaptic ou de Apt-get,

~1~
Compilation croisée pour ARM avec Ubuntu

Le but de la compilation croisée est de compiler pour une architecture sur une machine exécutant une
autre. Dans cet article, je vais essayer d'expliquer les étapes nécessaires pour pouvoir compiler un logiciel
exécutable sur du matériel ARM à l'aide d'un PC x64.

Les périphériques basés sur ARM ont généralement une puissance de traitement limitée et exécutent
principalement des versions intégrées et allégées de Linux. Cela rend parfois difficile la compilation
directe sur le périphérique cible.

Avant de commencer la compilation, nous devons installer les packages et les outils nécessaires pour la
compilation croisée pour ARM. Il s'agit notamment des outils standard nécessaires à la compilation.

Compiler un programme C simple à partir de la source


Une fois que nous avons installé les prérequis, nous pouvons essayer de compiler un programme C
simple.
#include "stdio.h"
int main(void) {
printf("Hello world !\n");
return 0;
}

Enregistrez la source sous helloworld.c

L'étape suivante consiste à compiler la même source pour ARM. Nous faisons simplement cela en
utilisant un compilateur différent (arm-linux-gnueabi-gcc au lieu de gcc).

arm-linux-gnueabi-gcc hello.c -o hello

~2~

Vous aimerez peut-être aussi