[Tutoriel]Compiler sous Windows avec GCC
Posté le 03/04/2015 15:18
J'ai décidé de reprendre le tutoriel de Lephenixnoir disponible ici pour compiler des addins sous windows. Malgré que l'on peut utiliser les binaires du PrizmSDK le faire, il est néanmoins plus intéressant de prendre des binaires à jour .
Je tiens à dire que c'est grâce à cette manière que l'on obtient que le compilateur du WinSDK
1.Installer MinGW et les outils adéquats.
I. Installer MinGW et les outils adéquats
Pour commencer, Il est nécessaire d'installer MinGW, un portage sous Windows du célèbrissime GCC. Téléchargez l'installateur
ici. Installez le à la racine du disque( par exemple, C:/). L'installateur va installer MinGW et MSys, les 2 programmes que nous allons utiliser tout au long du tuto
Ensuite, il vous faut installer
Libpng, gmp, mpfr et mpc.
J'ai déjà compiler les dernières versions des librairies disponible
ici.
Pour les installer, il vous suffit de copier le contenu des archives dans le dossier d'installation du MinGW( qui doit normalement être "C:/MinGW" )
II. Récupérer les sources
Pour compiler GCC, il faut......tadaaam... les sources de GCC. De plus, il va falloir les sources de Binutils. Lephenixnoir vous donne le lien vers un tableau de compatibilité entre les versions de GCC et celles de Binutils. Ce tableau est
ici.
-Sources de GCC
-Sources de Binutils
Pour ma part, j'ai utilisé GCC 4.9.2 et Binutils 2.25
III. Pré-compilation
Passons, à la préparation, on va d'abord créer un répertoire "src" à la racine.
Dedans, vous allez créer 2 dossier build-gcc et build-binutils.
On va aussi créer un dossier "cross" qui sera le dossier où se trouvera le compilateur fraîchement compilé
Puis vous allez décompresser les archives des sources dans le dossier "src"(enlevez les numéros de versions
) afin d'avoir une arborescence telle que:
C:/
+ src
- build-binutils
- build-gcc
- binutils
- cross
- gcc
Il ne faut pas utiliser le dossier root de votre disque(C:/ ou autre) car ça provoque des erreurs avec libtool!
IV. Compiler Binutils
Pour compiler gcc et binutils, nous allons maintenant passer sous
GNU/Linux (Julese50, tu est content ?
). Nous vous inquiétez pas, nous allons pas quitter windows, mais on va utiliser MSys. C'est un shell qui se comporte un peu comme Linux.
Pour le lancer, allez dans le dossier où est installé minGW, puis allez dans msys -> 1.0 et lancez msys.bat.
Une fenêtre s'ouvre, ressemblant à une console Linux.
Screenshot.
Pour naviguer avec cette console, utilisons la commande cd et allons dans le dossier "build-binutils"
$ cd c:/src/build-binutils
puis, on configure la compilation de Binutils
$ ../binutils/./configure --target=sh3eb-elf --prefix=c:/src/cross --disable-nls
Si la configuration affiche une erreur, MP moi pour que je vous aide
Puis on compile
$ make
$ make install
V.Compiler GCC
Maintenant, qu'on a Binutils, on va compiler gcc. Pour commencer, il faut ajouter le dossier bin au PATH:
export PATH=/c/src/cross/bin:$PATH
C'est pour que GCC puisse utiliser binutils pour la compilation de la libgcc.
allez dans build-gcc et configurer la compilation:
$ cd c:/src/build-gcc
$ ../gcc/./configure --target=sh3eb-elf --prefix=c:/src/cross --disable-nls --enable-languages=c,c++ --without-headers
et enfin compilons:
$ make all-gcc
$ make install-gcc
On va, par la même occasion compiler libgcc. Pour cela, il faut faire:
$ make all-target-libgcc
$ make install-target-libgcc
VI. Le G1A-Wrapper
Maintenant que nous pouvons compiler nos sources en binaire, il faut avoir un programme permettant d'ajouter un entête au programme pour qu'il puisse être lu par les Casios.
Le G1A-Wrapper est une application créé par
Kristaba qui va créer vos g1a à partir des fichiers binaires générés par gcc.
Téléchargement(cliquez sur "download zip)"
Dézippez le dossier des sources dans votre racine.
Je vous conseille de le renommer en "wrapper", ce sera plus simple par la suite.
Puis compilons le programme:
$ cd C:/wrapper
$ make all
$ make install
Vous aurez alors un programme g1a-wrapper.exe dans le dossier. Je vous conseille alors de le copier dans le même dossier que les compilateurs.
VII. La libfxcg
Pour compiler des programmes, il est nécessaire d'avoir une librairie. La libfxcg est la librairie conçu pour compiler des addins pour prizm.
D'abord, téléchargeons la libfxcg
lien.
Avant de la compiler, il faut ajouter les compilateurs au PATH.
Il faut aller dans Démarrer > Ordinateur > Propriétés systèmes (dans la barre en haut) > Paramètres Systèmes Avancés > Variables d'environnement...
Puis, dans la liste Variables utilisateur, double-cliquez sur PATH ( ou créer la si elle n'existe pas) et ajoutez à la fin:
;chemin du dossier des compilateurs
dans mon cas, j'ajouterais:
;C:/src/cross/bin
Puis, on ouvre avec un éditeur de texte les fichiers
Makefile situé dans le dossier "libc" et "libfxcg" et on modifie la ligne:
TOOLCHAIN_PREFIX=prizm-
par :
TOOLCHAIN_PREFIX=sh3eb-elf-
et on compile:
$ cd c:/src/libfxcg
$ make
Puis copiez les dossiers "include" et "lib" du dossier libfxcg dans le dossier du compilateur.
VIII. Mkg3a
Le g1awrapper est le programme qui crée les addins pour les caltos monochromes. Cependant, il faut un deuxième programme pour les addins pour prizm . Il s'agit du mkg3a , dévellopé par Tari (et nan, c'est pas la fils de A Tari
)
Téléchargement du Mkg3a
à suivre
Fichier joint
Citer : Posté le 03/04/2015 18:21 | #
Sympa !
Pour un peu de précision, MinGW n'est pas basé sur gcc mais est un portage minimal de gcc sous windows.
Sinon, j'indenterais un peu plus l'arborescence par sécurité si j'étais toi.
Enfin, il me semble avoir précisé que make install nécessitait les droits root, ce qui est repéré par un dièse (#) en début de ligne à la place d'un dollar ($).
Citer : Posté le 03/04/2015 18:23 | #
je vais modifier de suite
en fait, msys n'a pas la gestion des droits utilisateurs donc su et sudo n'existent pas, msys a les pleins pouvoirs sur le système
Citer : Posté le 03/04/2015 18:25 | #
Donc tout est exécuté en root ?
Mais enfin, les développeurs de msys n'ont pas conscience d'à quel point c'est dangereux ? oO
Citer : Posté le 03/04/2015 18:26 | #
Pas sous windows qui n'a pas la même gestion des droits je suppose
--prefix=c:/src/cross
Je ne pense pas que ce dossier soit protégé en écriture donc pas de root
(je rapelle que la commande "make install" ne doit habituellement être lancée en root que parce qu'elel écrit dans des dossiers protégés (la plupart du temps dans /usr/local/*, dans /usr/local/gcc dans le tuto de lephé)
Mais comme d'hab je peux me tromper hein !
Grilled
Coïncidence ? Je ne pense pas.
Citer : Posté le 03/04/2015 18:26 | #
oui, tout en root
Citer : Posté le 03/04/2015 18:27 | #
Et c'est inhérent à windows, c'est pas vraiment la faute de msys
Coïncidence ? Je ne pense pas.
Citer : Posté le 03/04/2015 18:27 | #
Tu dis de télécharger les Libpng, gmp, mpfr et mpc dans C:\MinGW, or ces paquets ont des dossiers "bin" qui vont se fusionner !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 03/04/2015 18:29 | #
ben, justement, ils doivent fusionner
Citer : Posté le 03/04/2015 18:29 | #
Ils sont pas chacun dans leurs propres dossiers ?
Coïncidence ? Je ne pense pas.
Citer : Posté le 03/04/2015 18:30 | #
En fait, le truc .Izma doit être ouvert avec quoi ?
Ajouté le 03/04/2015 à 18:31 :
Car gmp, mpfr et mpc sont des .tar.Izma
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 03/04/2015 18:31 | #
@drac nan, ils doivent être avec mingw
@lego avec 7-zip
Citer : Posté le 03/04/2015 18:32 | #
Ah. Je verrai un autre jour alors, je vais déjà essayer de faire marcher le PrizmSDK et/ou le WinSDK.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 05/04/2015 20:23 | #
j'ai rajouté quelques parties
Citer : Posté le 05/04/2015 21:27 | #
Woah, c'est épuré tout ça Quoique je pense savoir de quoi tu t'es inspiré x_x
Attends-toi à avoir beaucoup de « ça fonctionne pas, je fais quoi ? » en retour xD
Citer : Posté le 05/04/2015 21:30 | #
Attends-toi à avoir beaucoup de « ça fonctionne pas, je fais quoi ? » en retour xD
tant pis, j'y repondrais , au pire, je dirais "j'ai juste copier coller ce topic http://www.planet-casio.com/Fr/programmation/tutoriels.php?id=61 , posez vos questions à l'auteur"
Citer : Posté le 05/04/2015 21:36 | #
Et moi je leur répondrai « Je suis incompétent avec Windows, mais je vais faire de mon mieux pour répondre à votre problème », et je vois déjà venir que ça va pas donner bonne impression de ta manière de copier les topics xD
Pas de HS svp.
Citer : Posté le 10/04/2019 20:33 | #
Malgré que l'on peut utiliser les binaires du PrizmSDK le faire, il est néanmoins plus intéressant de prendre des binaires à jour .
Est-il possible, et si oui comment, de bidouiller les binaires du PSDK pour compiler sur une graph 75+e ? (genre comment changer les libs et le makefile)
Non parce que ça serait quand même vachement plus pratique...
Citer : Posté le 10/04/2019 20:44 | #
Tout ce qui touche à la toolchain peut être réutilisé tel quel. Par contre le compilateur ne sera jamais à jour...
Tout ce qui est des libs se trouve à la fin de ce tutoriel pour fxlib, et dans la doc de gint pour gint.
Pour le Makefile, en général tu le fais non ?
Citer : Posté le 10/04/2019 20:48 | #
Pour le makefile je vais le faire, mais pour mettre gint direct dans les dossiers libs et include, je fais comment ?
Citer : Posté le 10/04/2019 20:51 | #
Ah en effet, tu n'auras pas de chemin correct pour le compilateur. Il te suffit de le compiler comme d'habitude, mais au lieu de taper make install tu copies les fichiers qu'il te faut dans ton projet (il y a libgint-fx.a, fx9860g.ld et tout le dossier include/gint). Ensuite tu utilises les flags qu'il faut pour les utiliser (à savoir -L et -l pour la lib, -T pour le linker script et -I pour les en-têtes).