Utiliser Qemu pour tester vos applications cross-compilées

Qemu est un émulateur de processeurs. On retrouve d’une part la possibilité de virtualiser un autre système d’exploitation que le sien sur une architecture x86, comme le fait Virtual Box par exemple. On peut d’autre part émuler une autre architecture que x86 et ainsi tester du code ou une distribution pour une architecture ARM, PowerPC ou encore MIPS. Pierre Ficheux utilise, dans son livre « Linux Embarqué », la possibilité d’émuler un système ARM complet pour tester les distributions construites au cours de l’ouvrage.

Qemu Logo

Qemu est aussi capable d’émuler uniquement la partie utilisateur d’un système ARM (ou d’une autre architecture mais je parlerai ici d’ARM uniquement). On peut ainsi écrire un programme en C, le cross-compiler pour ARM et le tester à l’aide de Qemu sans pour autant charger un système Linux pour ARM complet. Cette possibilité est offerte via la commande qemu-arm du paquet qemu-user.

$> sudo apt-get install qemu-user

Voici un exemple tout simple :

$> cat helloworld.c
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
     printf("hello, arm world\n");
     return 0;
}

$> arm-linux-gcc -o helloworld helloworld.c -Wall -static
$> # arm-linux-gcc est le compilateur croisée que j'utilise (ELDK42)
$> qemu-arm helloworld
hello, arm world

Ici, les bibliothèques sont liées de façon statique à l’exécutable et il n’est pas nécessaire de préciser à Qemu le chemin d’accès aux bibliothèques. On peut également compiler dynamiquement et on doit alors indiquer à Qemu le chemin vers les bibliothèques adaptées avec l’option -L :

$> rm helloworld
$> arm-linux-gcc -o helloworld helloworld.c -Wall
$> qemu-arm -L /home/pierre/ELDK42/arm/ helloworld
hello, arm world

Une méthode simple et rapide pour tester une application ARM  : )

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s