Cross-Compilation pour le MSSII avec Ubuntu

Introduction

À l'heure actuelle, il n'existe pas de solution pour compiler nativement sur le MSSII, il n'est donc pas possible d'exécuter directement gcc. Cependant, il existe une solution pour faire tourner nos applications favorites sur le MSSII. Son nom est "cross-compilation". Le but de la cross-compilation est de compiler pour une plateforme (ici le MSSII) depuis une autre plateforme (Ubuntu dans cet article). Cet article vous expliquera comment obtenir facilement un environnement de compilation sous Scratchbox et compiler des programmes pour le MSSII.

Installer Scratchbox

Tout d'abord, nous devons installer Scratchbox pour pouvoir cross-compiler facilement. Je ne sais pas si la version disponible dans les dépôts Ubuntu marche avec le MSSII, mais j'ai vu qu'un package était disponible. Personnellement, j'ai utilisé le dépôts debian fourni sur le site officiel de Scratchbox. Pour ajouter un dépôt Scratchbox dans le gestionnaire de paquets sous Ubuntu, aller dans le menu suivant :

Système > Administration > Source de logiciels

Dans l'interface qui s'est ouverte, vous devez rajouter la ligne correspondant au dépôt de Scratchbox :

deb http://scratchbox.org/debian stable main

Après avoir validé, vous devrez installer les paquets de Scratchbox. Voici la liste des paquets que vous devez installer :

  • scratchbox-core et les paquets dépendants,
  • scratchbox-devkit-cputransp,
  • scratchbox-libs,
  • scratchbox-toolchain-cs2005q3.2-glibc2.5-arm.

Maintenant que nous avons installé Scratchbox, il faut le configurer.

Configurer Scratchbox 

Si vous utilisez Ubuntu Hardy Heron, vous devez saisir deux commandes dans un terminal pour éviter d'avoir une erreur au démarrage de Scratchbox : 

echo 0 | sudo tee /proc/sys/vm/vdso_enabled

echo 4096 | sudo tee /proc/sys/vm/mmap_min_addr

Ensuite, vous devrez créer un groupe et un utilisateur pour Scratchbox (pour répliquer la structure /home dans l'émulation de l'environnement de travail). Premièrement, nous allons créer un groupe "users" :

/scratchbox/sbin/sbox_configure yes users

Puis créer un utilisateur "userx" dans le groupe "users" :

/scratchbox/sbin/sbox_adduser userx yes

Ensuite, nous devons choisir quel processeur devra être émulé par Scratchbox, en configurant une "target". D'abord, démarrez Scratchbox :

scratchbox

L'invite du shell devrait se transformer en "scratchbox@your_machine". Après, entrer dans le menu en tapant la commande suivante : 

sb-menu

Le menu de Scratchbox apparaît. Là, vous devrez choisir les menus suivants :

  • Setup, puis <NEW>
  • Entrer "MSSII" pour le nom de la "target",
  • Choisir "cs2005q3.2-glibc2.5-arm" pour le compilateur,
  • Ajouter le devkit "cputransp",
  • Choisir "qemu-arm-0.8.2-sb2" pour la méthode "CPU-transparency",
  • Cliquer sur "NO" pour "Do you wish to extract a rootstrap on the target ?",
  • "YES" pour l'installation de fichiers puis "OK" pour valider les fichiers sélectionnés par défaut (C library, /etc, ...),
  • Choisir "YES" lorsqu'on vous demande si vous souhaitez sélectionner la "target".

Vous avez maintenant un environnement de développement fonctionnel. Vous pourrez vous débrouillez en sachant dans quels répertoire est situé l'environnement virtuel sur votre disque dur.

Adresses

Votre répertoire d'accueil dans l'environnement Scratchbox est situé à l'adresse suivante dans votre environnement réel :

/scratchbox/users/userx/home/userx/

Si vous compilez des bibliothèques (".a") et des fichiers include (".h"), vous devrez les mettre dans les répertoires suivants pour que GCC les retrouve :

/usr/lib/

/usr/include/

Conclusion

En utilisant cette méthode, j'ai réussi à compiler la dernière version de vsftpd (v2.0.6) avec le support SSL en compilant d'abord la bibliothèque OpenSSL, puis vsftpd avec la directive SSL.