Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Tutoriel]Compiler sous Windows avec GCC
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

[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


1, 2 Suivante
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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 ($).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 03/04/2015 18:23 | #


Pour un peu de précision, MinGW n'est pas basé sur gcc mais est un portage minimal de gcc sous windows.


je vais modifier de suite

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 ($).


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
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 03/04/2015 18:26 | #


Pas sous windows qui n'a pas la même gestion des droits je suppose

Intel a écrit :
--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
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 03/04/2015 18:26 | #


oui, tout en root
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 03/04/2015 18:27 | #


Et c'est inhérent à windows, c'est pas vraiment la faute de msys
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

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 !
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 03/04/2015 18:29 | #


ben, justement, ils doivent fusionner
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 03/04/2015 18:29 | #


Ils sont pas chacun dans leurs propres dossiers ?
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

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
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 03/04/2015 18:31 | #


@drac nan, ils doivent être avec mingw

@lego avec 7-zip
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

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.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 05/04/2015 20:23 | #


j'ai rajouté quelques parties
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 05/04/2015 21:30 | #


Lephenixnoir a écrit :
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"
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Milang Hors ligne Membre Points: 488 Défis: 2 Message

Citer : Posté le 10/04/2019 20:33 | #


Intelligide a écrit :
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...
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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 ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Milang Hors ligne Membre Points: 488 Défis: 2 Message

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 ?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

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).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd