Installation des outils cross-compilés pour MIPS

De Ensiwiki
Aller à : navigation, rechercher

Il est possible de compiler outils GNU tels que les binutils (assembleur, éditeur de liens, ...), GCC (assembleur), la libc (bibliothèque standard pour le langage C, et un peu plus) pour n'importe quelle architecture. Lorsque que l'architecture n'est pas celle de la machine sur laquelle on travaille, on parle de cross-compilation (« compilation croisée » en bon Français).

Pour le projet C « Assembleur MIPS », on peut travailler en n'ayant pas GCC mais on ne peut pas tester grand chose sans les binutils (en particulier, pour développer un assembleur, c'est très pratique d'avoir un désassembleur comme mips-objdump -d sous la main pour vérifier). mips-gdb vous permettra d'exécuter vos programmes, et GCC et la libc sont un peu la cerise sur le gâteau : ils permettent d'exécuter correctement des programmes utilisant une pile et des entrées-sorties.

Les instructions qui suivent ont été testées sous Linux. Elles marcheront sans doute sous Mac OS X et peut-être sous Cygwin, mais sans garantie (merci de compléter cette page si vous y arrivez !).

AttentionCette page vous permet d'installer ces outils chez vous. A l'Ensimag, c'est déjà fait en réalité... Ajoutez le chemin /opt/mips-tools-cep/bin dans votre PATH.


Préparation : où installer, configuration, ...

Prérequis

Il vous faut bien sur les outils classiques de compilations installés (GCC, make, ...). Sur une dérivée de Debian, tout cela se trouve dans un paquet build-essential. Si vous ne l'avez pas encore, installez-le via votre gestionnaire de paquets préféré (apt-get, aptitude, ...) :

sudo aptitude install build-essential

Pour gcc, quelques dépendances nécessitent l'installation de paquets supplémentaires, en particulier :

sudo aptitude install ncurses-dev texinfo libgmp-dev libmpfr-dev libmpc-dev 

Bien entendu d'autres paquets peuvent être nécessaires selon votre distribution et sa configuration. Généralement, ils sont indiqués dans les messages d'erreurs à l'exéction de ./configure ou make.

Où installer ?

Les outils pour MIPS sont difficilement trouvables sous forme binaire, nous allons donc les compiler. Il nous faut :

  • Un répertoire où compiler: dans notre exemple $HOME/mips-tmp
  • Un répertoire où installer les outils compilés: dans notre exemple /opt/mips-projetc
AttentionLa création du répertoire dans /opt, et plus tard l'installation dans ce répertoire, nécessite des droits d'administration. Typiquement: sudo mkdir /opt/mips-projetc


L'installation des binutils devrait vous prendre quelques minutes et quelques centaines de méga-octets. Pour installer GCC, c'est une autre paire de manche : compter 2 à 3 Go sur le disque, et bon quart d'heure, plus les éventuelles galères ...

Recopiez les lignes suivantes dans un fichier setup.sh, en adaptant les premières lignes si vous ne voulez pas prendre les mêmes répertoires que l'exemple :

# A ajuster en fonction des répertoires choisis :
export MIPS_PREFIX=/opt/mips-projetc
export MIPS_SOURCES=$HOME/mips

# Partie fixe :
export PATH="$MIPS_PREFIX/bin:${PATH}"
export GCC_FOR_TARGET=mips-gcc
export CC_FOR_TARGET=mips-gcc
export AR_FOR_TARGET=mips-ar
export AS_FOR_TARGET=mips-as
export LD_FOR_TARGET=mips-ld
export NM_FOR_TARGET=mips-nm
export OBJDUMP_FOR_TARGET=mips-objdump
export RANLIB_FOR_TARGET=mips-ranlib
export STRIP_FOR_TARGET=mips-strip

Pour Linux

À la fin de votre fichier .bashrc, ajoutez la ligne

source /opt/mips-projetc/setup.sh

(si vous avez mis le fichier dans /opt/mips-projetc/setup.sh. À adapter sinon)


Sauvez le fichier et tapez source ~/.bashrc (ou fermez votre console et ouvrez-en une nouvelle). Vérifiez que les répertoires $MIPS_PREFIX et $MIPS_SOURCES existent, et sinon, créez-les.

Pour Mac

La même chose, mais dans le fichier de configuration /etc/profile (via nano et en root).

Les binutils : assembleur, désassembleur, éditeur de lien, ...

Step 1: Récupération des sources

Il est nécessaire de récupérer les sources du package binutils sur le site de GNU, et de les copier dans MIPS_SOURCES. Exemple (avec des versions récentes) :

cd $MIPS_SOURCES
wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.bz2

Liens: http://www.gnu.org/software/binutils/

Step 2: Installation

cd $MIPS_SOURCES
tar xvfj binutils-2.26.tar.bz2
cd binutils-2.26
./configure --prefix="$MIPS_PREFIX" --target=mips-elf --program-prefix=mips- --disable-werror
make

Puis, en temps qu'administrateur (ou bien en restant simple utilisateur si vous installez ces logiciels dans un répertoire sur lequel vous avez les droits) :

sudo make install

(Si vous ne définissez pas l'option --prefix, l'installation se fera dans /usr/local, ce qui est assez propre également mais nécessite d'être root pour exécuter le make install).

step 3: test

Pour vérifier que tout est bien installé, on peut au moins vérifier que les programmes sont là et qu'ils s'exécutent correctement :

mylogin@mymachine:~/mips-tmp/binutils-2.26$ which mips-as
/opt/mips-projetc/bin/mips-as

mylogin@mymachine:~/mips-tmp/binutils-2.26$ mips-as --version
Assembleur GNU (GNU Binutils) 2.26.20160125
Copyright (C) 2015 Free Software Foundation, Inc.
Ce logiciel est libre; vous pouvez le redistribuer selon les termes de la
version 3 de la licence GNU General Public License ou suivante.
Ce