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 - Projets de programmation


Index du Forum » Projets de programmation » µSTL pour Casio Graph 90+E avec fxsdk gint
Slyvtt Hors ligne Maître du Puzzle Points: 2410 Défis: 17 Message

µSTL pour Casio Graph 90+E avec fxsdk gint

Posté le 24/02/2022 12:44

Hello,

j'essaie (tant bien que mal) de faire fonctionner la µSTL (v 2.1 pour le moment, on verra par la suite si on peut tendre vers la v 3.0 qui vient de sortir) avec le fxSDK/Gint.

Je suis partie de l'implémentation de Pavel et ai modifié qq petits trucs pour que ça compile sur Gint, mais relativement peux de choses étaient à reprendre (principalement dans fstream.cc) ou un syscall à BFile_GetFileSize a du etre remplacé par BFile_Size de gint/bfile.h et la definition de deux constantes de errno.h absentes EINTR et EAGAIN (j'ai repris les valeurs adhoc d'une implémentation sur PC de manière un peu arbitraire, juste pour que ca passe).

Avec ces quelques modifs, la compilation de la libustl.a passe (avec -std=c++11).

Je copie donc la libustl.a dans le compilo (gcc.11.1.0 à coté de libc.a et libgcc.a ...) et les headers dans le dossier include du compilo

Là ou ça se complique c'est lors de la création d'un Addins de test

un coup de
fxsdk new testustl
pour créer le projet

Je renomme le "main.c" en "main.cc" pour que le compilo passe en C++ (juste au cas où, a priori pas nécessaire, mais sait on jamais)
un coup d'edition de CmakeLists.txt (je joins la version light, focalisée sur la CG50) ouù j'édite la ligne de compilation et de linkage :


target_compile_options(myaddin PRIVATE -Wall -Wextra -Os -std=c++11)
target_link_libraries(myaddin Gint::Gint -lustl -lc)


et là c'est le drame :

erreur de linkage : reference indéfinie vers "_stderr" dans la fonction ___assert_fail de la libc.


sylvain@SlyPC:~/Programmes/Casio/testustl$ fxsdk build-cg VERBOSE=1
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Check for working C compiler: /home/sylvain/.local/bin/sh-elf-gcc
-- Check for working C compiler: /home/sylvain/.local/bin/sh-elf-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/sylvain/.local/bin/sh-elf-g++
-- Check for working CXX compiler: /home/sylvain/.local/bin/sh-elf-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Gint: TRUE (found suitable version "2.7.0", minimum required is "2.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sylvain/Programmes/Casio/testustl/build-cg
/usr/bin/cmake -S/home/sylvain/Programmes/Casio/testustl -B/home/sylvain/Programmes/Casio/testustl/build-cg --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles /home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make -f CMakeFiles/myaddin.dir/build.make CMakeFiles/myaddin.dir/depend
cd /home/sylvain/Programmes/Casio/testustl/build-cg && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/sylvain/Programmes/Casio/testustl /home/sylvain/Programmes/Casio/testustl /home/sylvain/Programmes/Casio/testustl/build-cg /home/sylvain/Programmes/Casio/testustl/build-cg /home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles/myaddin.dir/DependInfo.cmake --color=
Dependee "/home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles/myaddin.dir/DependInfo.cmake" is newer than depender "/home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles/myaddin.dir/depend.internal".
Dependee "/home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/home/sylvain/Programmes/Casio/testustl/build-cg/CMakeFiles/myaddin.dir/depend.internal".
Scanning dependencies of target myaddin
make -f CMakeFiles/myaddin.dir/build.make CMakeFiles/myaddin.dir/build
[ 33%] Building CXX object CMakeFiles/myaddin.dir/src/main.cc.obj
/home/sylvain/.local/bin/sh-elf-g++  -DFXCG50 -DTARGET_FXCG50 -isystem /home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/./include/openlibm  -m4-nofpu -mb -ffreestanding -nostdlib -Wa,--dsp -Wall -Wextra -Os -std=c++11 -fstrict-volatile-bitfields -o CMakeFiles/myaddin.dir/src/main.cc.obj -c /home/sylvain/Programmes/Casio/testustl/src/main.cc
[ 66%] Building FXCONV object CMakeFiles/myaddin.dir/assets-cg/example.png
fxconv /home/sylvain/Programmes/Casio/testustl/assets-cg/example.png -o CMakeFiles/myaddin.dir/assets-cg/example.png --toolchain=sh-elf --cg
[100%] Linking CXX executable myaddin
/usr/bin/cmake -E cmake_link_script CMakeFiles/myaddin.dir/link.txt --verbose=1
/home/sylvain/.local/bin/sh-elf-g++    -nostdlib -T fxcg50.ld -lgcc CMakeFiles/myaddin.dir/src/main.cc.obj CMakeFiles/myaddin.dir/assets-cg/example.png  -o myaddin  -lgcc -lgcc /home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/libgint-cg.a -lustl -lc /home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/libc.a /home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/libgint-cg.a /home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/libc.a -lopenlibm -lgcc
/home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/bin/ld : /home/sylvain/.local/share/giteapc/Lephenixnoir/sh-elf-gcc/lib/gcc/sh3eb-elf/11.1.0/libc.a(assert.c.obj) : dans la fonction « ___assert_fail » :
assert.c:(.text+0x1c) : référence indéfinie vers « _stderr »
collect2: erreur: ld a retourné le statut de sortie 1
make[2]: *** [CMakeFiles/myaddin.dir/build.make:98 : myaddin] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:76 : CMakeFiles/myaddin.dir/all] Erreur 2
make: *** [Makefile:84 : all] Erreur 2
sylvain@SlyPC:~/Programmes/Casio/testustl$


Une idée sur la cause du problème ?


Lephenixnoir Hors ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 05/02/2023 15:58 | #


La mise à jour 2.9.0 requiert (exceptionnellement) de tout réinstaller, comme tu l'as vu dans les instructions, donc oui il faut évidemment mettre à jour gint avec.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2410 Défis: 17 Message

Citer : Posté le 05/02/2023 16:02 | #


Tiens voilà ce que j'ai oublié de faire, je dois mettre un message dans le dépôt de µSTL pour signifier qu'avec fxSDK 2.9.0, la librairie standard est incluse.

J'avais zappé, désolé.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Yannis300307 Hors ligne Membre Points: 297 Défis: 0 Message

Citer : Posté le 05/02/2023 16:22 | #


J'ai essayé de mettre à jour Gint mais j'obtiens l'erreur suivante pendant sa compilation :

<giteapc> Lephenixnoir/gint: Configuring
-- Configuring done
-- Generating done
-- Build files have been written to: /root/.local/share/giteapc/Lephenixnoir/gint/build-fx
-- Configuring done
-- Generating done
-- Build files have been written to: /root/.local/share/giteapc/Lephenixnoir/gint/build-cg
<giteapc> Lephenixnoir/gint: Building
[  0%] Building C object CMakeFiles/gint-fx.dir/src/cpg/cpg.c.obj
In file included from /root/.local/share/giteapc/Lephenixnoir/gint/include/gint/drivers.h:13,
                 from /root/.local/share/giteapc/Lephenixnoir/gint/src/cpg/cpg.c:5:
/root/.local/share/giteapc/Lephenixnoir/gint/include/gint/defs/types.h:17:10: fatal error: sys/types.h: No such file or directory
   17 | #include <sys/types.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
make[3]: *** [CMakeFiles/gint-fx.dir/build.make:63: CMakeFiles/gint-fx.dir/src/cpg/cpg.c.obj] Error 1
make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/gint-fx.dir/all] Error 2
make[1]: *** [Makefile:130: all] Error 2
make: *** [giteapc.make:10: build] Error 2
error: error 2 in command: make -f giteapc.make build

WOW ! Mais qu'est-ce-que je vois ??!! Une extension VS Code qui permet de simplifier le développement sur calculatrices ??!! C'est ici : Casio Dev Tools. C'est incroyable ! C'est prodigieux !
Yannis300307 Hors ligne Membre Points: 297 Défis: 0 Message

Citer : Posté le 05/02/2023 16:53 | #


J'est réinstallé sh-elf-gcc mais maintenant il ne le trouve plus... Autant à la compilation de gint qu'à la compilation du projet.

à l'installation il met :

<giteapc> Lephenixnoir/OpenLibm: Configuring
<giteapc> Lephenixnoir/OpenLibm: Building
make[1]: Entering directory '/root/.local/share/giteapc/Lephenixnoir/OpenLibm'
/bin/sh: 1: sh-elf-gcc: not found
/bin/sh: 1: sh-elf-gcc: not found
/bin/sh: 1: sh-elf-gcc: not found
/bin/sh: 1: sh-elf-gcc: not found
...
/bin/sh: 1: sh-elf-gcc: not found
/bin/sh: 1: sh-elf-gcc: not found
sh-elf-gcc -shared src/common.c.o src/e_acos.c.o src/e ... un gros pavé ici...
make[1]: sh-elf-gcc: Command not found
make[1]: *** [Makefile:70: libopenlibm.so.3.0] Error 127
make[1]: Leaving directory '/root/.local/share/giteapc/Lephenixnoir/OpenLibm'
make: *** [giteapc.make:16: build] Error 2
error: error 2 in command: make -f giteapc.make build

WOW ! Mais qu'est-ce-que je vois ??!! Une extension VS Code qui permet de simplifier le développement sur calculatrices ??!! C'est ici : Casio Dev Tools. C'est incroyable ! C'est prodigieux !
Slyvtt Hors ligne Maître du Puzzle Points: 2410 Défis: 17 Message

Citer : Posté le 05/02/2023 16:58 | #


Tu devrais repartir d'une base nettoyée (en faisant les giteapc uninstall).
On dirait qu'il y a eu des mélanges entre ton ancienne toolchain et celle que tu installes en ce moment.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Yannis300307 Hors ligne Membre Points: 297 Défis: 0 Message

Citer : Posté le 05/02/2023 17:02 | #


Ok je vais tout réinstaller et voir si ça refonctionne.
WOW ! Mais qu'est-ce-que je vois ??!! Une extension VS Code qui permet de simplifier le développement sur calculatrices ??!! C'est ici : Casio Dev Tools. C'est incroyable ! C'est prodigieux !
Yannis300307 Hors ligne Membre Points: 297 Défis: 0 Message

Citer : Posté le 05/02/2023 17:21 | #


J'ai tout désinstallé et réinstallé. Gint s'est bin installé mais j'ai toujours la meme erreur où il ne trouve toujours pas "vector". Pourtant il me semble que mon CMakeList.txt est bon ...
# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the
# toolchain file and module path of the fxSDK

cmake_minimum_required(VERSION 3.15)
project(MyAddin)

include(GenerateG1A)
include(GenerateG3A)
include(Fxconv)
find_package(Gint 2.1 REQUIRED)

set(SOURCES
  src/main.cpp
  #src/main.c
  #src/renderer.c
  #src/utils.c
  # ...
)
# Shared assets, fx-9860G-only assets and fx-CG-50-only assets
set(ASSETS
  # ...
)
set(ASSETS_fx
  assets-fx/example.png
  # ...
)
set(ASSETS_cg
  assets-cg/example.png
  # ...
)

fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA)

add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
target_compile_options(myaddin PRIVATE -Wall -Wextra -Os)

target_link_libraries(myaddin Gint::Gint -lstdc++)

if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G)
  generate_g1a(TARGET myaddin OUTPUT "MyAddin.g1a"
    NAME "MyAddin" ICON assets-fx/icon.png)
elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
  generate_g3a(TARGET myaddin OUTPUT "MyAddin.g3a"
    NAME "MyAddin" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
endif()

WOW ! Mais qu'est-ce-que je vois ??!! Une extension VS Code qui permet de simplifier le développement sur calculatrices ??!! C'est ici : Casio Dev Tools. C'est incroyable ! C'est prodigieux !
Slyvtt Hors ligne Maître du Puzzle Points: 2410 Défis: 17 Message

Citer : Posté le 05/02/2023 17:44 | #


Essaie de rajouter -std=c++20 à la fin de ta ligne target_compile_option
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Yannis300307 Hors ligne Membre Points: 297 Défis: 0 Message

Citer : Posté le 05/02/2023 17:58 | #


Je crois que j'avais mal tout réinstaller mais malgré les erreurs (qui n'ont pas de rapport avec gint) je crois que ça a fonctionné ! Merci
WOW ! Mais qu'est-ce-que je vois ??!! Une extension VS Code qui permet de simplifier le développement sur calculatrices ??!! C'est ici : Casio Dev Tools. C'est incroyable ! C'est prodigieux !
Slyvtt Hors ligne Maître du Puzzle Points: 2410 Défis: 17 Message

Citer : Posté le 05/02/2023 18:06 | #


Ok cool
There are only 10 types of people in the world: Those who understand binary, and those who don't ...

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 96 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