Obligement - L'Amiga au maximum

Vendredi 06 juin 2025 - 12:51  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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 distribution Debian GNU/Linux. Il est possible de faire fonctionner cette distribution 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 le système d'exploitation 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".

michel
mardi 03 mai 2005
200443 ~# ls /opt/crosstool/powerpc-750-linux-gnu/gcc-3.4.0-glibc-2.3.2/bin
powerpc-750-linux-gnu-addr2line*  powerpc-750-linux-gnu-gprof*
powerpc-750-linux-gnu-ar*         powerpc-750-linux-gnu-ld*
powerpc-750-linux-gnu-as*         powerpc-750-linux-gnu-nm*
powerpc-750-linux-gnu-c++*        powerpc-750-linux-gnu-objcopy*
powerpc-750-linux-gnu-c++filt*    powerpc-750-linux-gnu-objdump*
powerpc-750-linux-gnu-cpp*        powerpc-750-linux-gnu-ranlib*
powerpc-750-linux-gnu-g++*        powerpc-750-linux-gnu-readelf*
powerpc-750-linux-gnu-gcc*        powerpc-750-linux-gnu-size*
powerpc-750-linux-gnu-gcc-3.4.0*  powerpc-750-linux-gnu-strings*
powerpc-750-linux-gnu-gccbug*     powerpc-750-linux-gnu-strip*
powerpc-750-linux-gnu-gcov*

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]