Obligement - L'Amiga au maximum

Mardi 21 novembre 2017 - 16:48  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : La compilation croisée x86 vers PowerPC sur GNU/Linux
(Article écrit par Michel Besançon - juin 2005)


L'émulateur UAE temporise mon porte-monnaie pour passer à l'AmigaOne ou au Pegasos avec ma Debian. Il est possible de faire fonctionner une distribution Debian GNU/Linux avec ces deux types de cartes équipées de processeurs PowerPC et je m'en réjouis. J'utilise actuellement GNU/Linux depuis des années (1998) en premier sur mon A1200 (m68k) et dernièrement sur du PC (amd64).

Pour l'instant, je ne fais pas de différence technique entre ces deux cartes, elles ont le mérite d'exister. Je peux remarquer que GNU/Linux fonctionne sur les deux (vive le logiciel libre) mais pas l'OS Amiga, je trouve cela regrettable et préjudiciable pour l'Amiga.

J'avais aussi un rêve de pouvoir étendre les paquetages de la Debian GNU/Linux PowerPC pour ces cartes mais comme je n'ai pas ce type de carte sous la main, je me tourne vers la compilation croisée...

Cela consiste à utiliser ma machine équipée d'un microprocesseur "A" faisant fonctionner les outils et compiler des programmes pour une autre machine équipée d'un microprocesseur "B".

Compilation croisée x86 vers PowerPC

Configuration nécessaire

Debian sarge : ikarios.com/form/index.html#debian.
Crosstool : kegel.com/crosstool/crosstool-0.31.tar.gz.
QEMU : fabrice.bellard.free.fr/qemu/qemu-0.7.0.tar.gz.

1. Debian :

La Debian Sarge doit être équipée des outils pour la compilation, en particulier GCC et les fichiers d'en-tête (include) de votre noyau.

2. Fabrication des outils de Crosstool :

Le fichier .tar.gz de Crosstool peut être décompressé sur un compte utilisateur (/home/"dupont").

Il faut créer un répertoire sous root qui sera utilisé par le script qui lancera la compilation des outils PowerPC qui se trouveront dans un sous-répertoire.

mkdir /opt/cross --> création répertoire temporaire.
chown $USER /opt/cross --> les droits à celui qui compile.

Il faut que vous soyez connecté à Internet car le script va chercher les sources de Glibc, votre noyau, GCC, binutils et la gestion des tâches Linux pour la Glibc (cela ne modifiera pas votre système, c'est utilisé en parallèle dans le répertoire).

L'utilisateur peut maintenant démarrer le script qui déclenchera la séance de compilation. Vous le remarquerez, cela va prendre un certain temps, plus ou moins long, suivant vos ressources matérielles.

./demo-ppc750.sh --> lancer par le compte de l'USER.

Les versions de GCC évoluent et le site où le script va chercher les sources n'est peut-être pas à jour, si vous avez une erreur de disponibilité, vous pouvez intervenir directement dans ce fichier en modifiant (commenter/décommenter) un des choix dans une ligne commençant par "eval".

Une fois terminé, on obtient tous les outils créés pour le type de microprocesseur voulu dans le répertoire (les noms peuvent varier suivant vos versions de GCC et Glibc) :

./crosstool/powerpc-750-linux-gnu/gcc-3.4.0-glibc-2.3.2/

Les outils qui nous intéressent pour la compilation croisée se trouvent dans le répertoire "bin", le chemin de ce répertoire est à placer dans votre $PATH pour être tranquille.

3. L'émulateur QEMU :

Avec le compilateur "powerpc-750-linux-gnu-gcc" on obtient des exécutables (binaires) avec du code PowerPC.

Pour pouvoir tester ces exécutables sans avoir une carte mère équipée de microprocesseur PowerPC, comme un AmigaOne (par exemple !), on peut utiliser l'émulateur PowerPC QEMU sous GNU/linux.

Après avoir décompresser le fichier .tar.gz de QEMU dans votre /home, vous entrez dans le répertoire obtenu pour appliquer sa compilation :

./configure -target-list=ppc-user --> type processeur "PPC".
make --> lancement de la compilation.

Cela produit "qemu-ppc" qui se trouve dans le répertoire "ppc-user", il permettra d'exécuter les binaires PowerPC obtenus avec les outils de Crosstool.

Exemples de compilations

Exemple A : un classique "Salut le monde" pour essayer :

Placez le source suivant dans un ficher "salut.c" :

#include <stdio.h> 

int main(int argc, char *argv[])
{
        printf("Salut le monde.\n");
        return 0;
}

On utilisera une compilation en mode static pour ne pas avoir de difficultés avec l'édition de liens de bibliothèques dynamiques PowerPC sur un hôte en x86.

Pour produire un exécutable nommé "salut" avec un format de code 32 bits PowerPC ELF, faire la commande suivante (placez bien le chemin dans votre $PATH) :

powerpc-750-linux-gnu-gcc -static salut.c -o salut

Pour vérifier le bon format de l'exécutable obtenu, tapez :

file salut

Pour tester le fonctionnement de l'exécutable obtenu avec l'émulateur QEMU, faites :

./ppc-user/qemu-ppc salut

"Bonjour le monde" doit s'afficher dans votre terminal.

Exemple B : une utilisation dans un Makefile avec un programme qui permet de lire des fichiers au format AmigaGuide avec GNU/Linux :

Ce programme se nomme AGReader et se trouve sur Aminet : www.aminet.net/misc/unix/AGReader.tgz. Dans le AGReader/Sources/Makefile vous mettez "powerpc-750-linux-gnu-gcc -static" à la place de GCC et ensuite faites "make" pour obtenir l'exécutable "agr" en PowerPC.

Testez le avec QEMU comme précédemment ou faites le fonctionner directement sur un AmigaOne avec la Debian Sarge PowerPC. Lorsqu'il est compilé sans l'option "-static", il fonctionne cette fois avec la "dynamic library glibc" sur la Debian de l'AmigaOne, c'est plus simple et les exécutables sont plus petits.


[Retour en haut] / [Retour aux articles]