Page 1 of 1

[ Résolu ] Compilation

Unread postPosted: 30 Mar 2025, 17:00
by qzeddqdqdqsd
Bonjour bonjour,

Je viens solliciter votre aide, car j’ai pas mal de problèmes avec Ndless SDK. En fait, notamment avec tous les liens morts que j’ai dû me taper juste pour l’installer sans erreur… ( peut être que j'ai mal lu les tutos) Un vrai parcours du combattant ! Ensuite, H24, j’ai des erreurs avec les fichiers Nspire du type lnspireio ect alors que j’ai bien compilé tous, bref un cauchemar avec des erreurs de compilation partout ! 😵‍💫😵‍💫😵‍💫

Et quand je réussis enfin à compiler le fichier .tns, je le mets sur ma calculatrice… et là, il me dit que ce fichier n’est pas pris en charge ! 😡😡😡

À noter que, comme je suis un peu flemmard j’utilise Cygwin 64 je suis sur win .

Donc, les problèmes que je rencontre sont :

(Je sais pas si j’ai mal cherché) Je n’ai pas trouvé de documentation sur le fonctionnement de tout cela, à part les tutoriels d’installation.

Des erreurs à tout-va.
Code: Select all
arm-none-eabi-ld: test.o: in function `main':
test.c:(.text.startup+0x10): undefined reference to `nspireio_putstr'
arm-none-eabi-ld: test.c:(.text.startup+0x14): undefined reference to `nspireio_getkey'
collect2: error: ld returned 1 exit status
make: *** [Makefile:43: test.elf] Error

Si c'est pas ca j'en d'autres a chaque fois
voici le petit test que j'essaye de faire pour le moment :
Code: Select all
#include <nspireio.h>

int main(void) {
    nspireio_putstr(10, 10, "Hello, World!");
    nspireio_getkey();
    return 0;
}


J'ai essayer avec le nspireio2 aussi.
Voici le makefile :
Code: Select all
DEBUG = FALSE

GCC = nspire-gcc
AS  = nspire-as
GXX = nspire-g++
LD  = nspire-ld
GENZEHN = genzehn

GCCFLAGS = -Wall -W -marm
GCCFLAGS += -I/cygdrive/c/cygwin64/home/442/ndless-sdk/thirdparty/nspire-io/include/nspireio
GCCFLAGS += -I/cygdrive/c/cygwin64/home/442/ndless-sdk/thirdparty/nspire-io/include
LDFLAGS = -L/cygdrive/c/cygwin64/home/442/ndless-sdk/thirdparty/nspire-io/lib -lnspireio

ZEHNFLAGS = --name "test"

ifeq ($(DEBUG),FALSE)
    GCCFLAGS += -Os
else
    GCCFLAGS += -O0 -g
endif

OBJS = $(patsubst %.c, %.o, $(shell find . -name *.c))
OBJS += $(patsubst %.cpp, %.o, $(shell find . -name *.cpp))
OBJS += $(patsubst %.S, %.o, $(shell find . -name *.S))
EXE = test
DISTDIR = .
vpath %.tns $(DISTDIR)
vpath %.elf $(DISTDIR)

all: $(EXE).tns

%.o: %.c
    $(GCC) $(GCCFLAGS) -c $< -o $@

%.o: %.cpp
    $(GXX) $(GCCFLAGS) -c $< -o $@

%.o: %.S
    $(AS) -c $< -o $@

$(EXE).elf: $(OBJS)
    mkdir -p $(DISTDIR)
    $(LD) $^ -o $@ $(LDFLAGS)

$(EXE).tns: $(EXE).elf
    $(GENZEHN) --input $^ --output $@.zehn $(ZEHNFLAGS)
    make-prg $@.zehn $@
    rm $@.zehn

clean:
    rm -f $(OBJS) $(DISTDIR)/$(EXE).tns $(DISTDIR)/$(EXE).elf $(DISTDIR)/$(EXE).zehn


Désolé pour le potentiel manque d'informations, mais j'aurais probablement dû attendre avant de rédiger. Cela fait un bon moment que je suis dessus, et il m'est toujours impossible de le faire fonctionner correctement… Ça devient lourd.

Re: [ Aide ] Compilation

Unread postPosted: 30 Mar 2025, 17:11
by Adriweb
Je pense que beaucoup de problèmes viennent sûrement du fait que cygwin doit mettre des bâtons dans les roues du bon fonctionnement normal... en tout cas sur Linux ou Mac je n'ai pas tout ces problèmes, et je n'ai jamais essayé moi même sous Windows...

Sinon ça paraît assez correct d'après ce que je lis rapidement...
2 questions:
- tu as bien le fichier libnspireio.a dans cygdrive/c/cygwin64/home/442/ndless-sdk/thirdparty/nspire-io/lib ? Vu que c'est ça qui va essayé d'être linké d'après le LDFLAGS... en gros je demande donc si tu as bien buildé le Ndless-SDK après avoir buildé la toolchain.
- les exemples de la toolchain (notamment ceux avec Nspire io, mais pas que) fonctionnent-ils ?

Re: [ Aide ] Compilation

Unread postPosted: 30 Mar 2025, 17:33
by qzeddqdqdqsd
Adriweb wrote:Je pense que beaucoup de problèmes viennent sûrement du fait que cygwin doit mettre des bâtons dans les roues du bon fonctionnement normal... en tout cas sur Linux ou Mac je n'ai pas tout ces problèmes, et je n'ai jamais essayé moi même sous Windows...

Sinon ça paraît assez correct d'après ce que je lis rapidement...
2 questions:
- tu as bien le fichier libnspireio.a dans cygdrive/c/cygwin64/home/442/ndless-sdk/thirdparty/nspire-io/lib ? Vu que c'est ça qui va essayé d'être linké d'après le LDFLAGS... en gros je demande donc si tu as bien buildé le Ndless-SDK après avoir buildé la toolchain.
- les exemples de la toolchain (notamment ceux avec Nspire io, mais pas que) fonctionnent-ils ?


Merci pour la réactivité ! Pour le coup, je ne sais même plus… J'ai dû l'installer deux fois, attendre 45 minutes deux fois à tel point que je ne sais même plus ce que j'ai fait. Par contre, pour répondre aux questions :
- Le fichier libnspireio.a est bien présent dans cygdrive/c/cygwin64/home/442/ndless-sdk/thirdparty/nspire-io/lib, donc il est bien compilé.

Quand je fait :
Code: Select all
cd /cygdrive/c/cygwin64/home/442/ndless-sdk
make clean
make


J'ai ça :
Code: Select all
$ make
make -C libsyscalls
make[1] : on entre dans le répertoire « /cygdrive/c/cygwin64/home/442/ndless-sdk/libsyscalls »
arm-none-eabi-g++ -mcpu=arm926ej-s -std=c++11 -nostdlib -O3 -fPIE -fno-exceptions -fno-rtti -mlong-calls -Wall -Werror -I ../include/ -I ../thirdparty/nspire-io/include/ -D_TINSPIRE -ffunction-sections -fdata-sections -c stubs.cpp -o stubs.o
make[1]: arm-none-eabi-g++: No such file or directory
make[1]:  [Makefile:18: stubs.o] Error 127
make[1] : on quitte le répertoire « /cygdrive/c/cygwin64/home/442/ndless-sdk/libsyscalls »
make:  [Makefile:14: build-libsyscalls] Error 2


À chaque fois, je me tape cette erreur arm-none-eabi-g++. À chaque fois, je corrige le chemin à chaque fois… cette erreur reviens 😤😤 Je crois que je vais aller sur Linux ou Mac. Comme quoi la fainéantise a un prix !

Re: [ Aide ] Compilation

Unread postPosted: 30 Mar 2025, 17:42
by Adriweb
Coté WSL2 sur windows ca devrait aussi mieux fonctionner que cygwin :)

Au passage il y a une PR sur le repo github en ce moment pour mettre a noir les différents composants de la toolchain. Mais bon a priori cote toolchain au moins tu n'a pas eu de problemes (ou du moins tu les a solutionnés).
Et ouai 45 min c'est énorme. Carrément plus rapide chez moi...

Re: [ Aide ] Compilation

Unread postPosted: 30 Mar 2025, 18:38
by qzeddqdqdqsd
Adriweb wrote:Coté WSL2 sur windows ca devrait aussi mieux fonctionner que cygwin :)

Au passage il y a une PR sur le repo github en ce moment pour mettre a noir les différents composants de la toolchain. Mais bon a priori cote toolchain au moins tu n'a pas eu de problemes (ou du moins tu les a solutionnés).
Et ouai 45 min c'est énorme. Carrément plus rapide chez moi...


Effectivement… 🤔 Avec WSL2, on en est déjà à 15 minutes. Je laisse le topic ouvert pour le moment, au cas où j'aurais une autre erreur car je compte stopper là pour aujourd'hui. En tout cas, merci encore ! 👍

Re: [ Aide ] Compilation

Unread postPosted: 31 Mar 2025, 18:10
by qzeddqdqdqsd
Adriweb wrote:Coté WSL2 sur windows ca devrait aussi mieux fonctionner que cygwin :)

Au passage il y a une PR sur le repo github en ce moment pour mettre a noir les différents composants de la toolchain. Mais bon a priori cote toolchain au moins tu n'a pas eu de problemes (ou du moins tu les a solutionnés).
Et ouai 45 min c'est énorme. Carrément plus rapide chez moi...


Re-bonjour,

J'ai finalement réussi à compiler et à installer le programme sur ma calculatrice avec succès. Il se lance sans problème, maintenant j'aimerais savoir s'il y a une documentation, car je remarque que beaucoup de choses fonctionnent différemment.

Re: [ Résolu ] Compilation

Unread postPosted: 31 Mar 2025, 18:12
by Adriweb
Félicitations - Ca a marché sur WSL2 donc ?

Et sinon pour la doc, tu cherches quoi exactement ? Parce que logiquement tout ce qui est disponible est dans les headers

Re: [ Résolu ] Compilation

Unread postPosted: 31 Mar 2025, 18:28
by qzeddqdqdqsd
Adriweb wrote:Félicitations - Ca a marché sur WSL2 donc ?

Et sinon pour la doc, tu cherches quoi exactement ? Parce que logiquement tout ce qui est disponible est dans les headers


Oui, impec sur WSL2.

En fait, je voulais surtout prendre en main l'écosystème donc j'ai tenté de faire un petit programme de devinette. L'idée est simple : générer un nombre aléatoire, afficher une boîte de dialogue pour entrer un chiffre ou un nombre, et dire si on l'a trouvé.

Mais j'ai pas mal d'erreurs à la compilation, probablement parce que j'utilise des fonctions non supportées ou mal adaptées à la calculatrice. Du coup, je cherche surtout à savoir quel header gère les boîtes de dialogue et les boutons. J'ai vu des programmes impressionnants sur le site, mais je ne sais pas s'ils ont suivi le même processus.

j'ai bien mis Normalement c'est bon :
Code: Select all
#include <libndls.h>
#include <nspireio/nspireio.h>
#include <os.h>


note j'ai des erreurs avec c.printf() ect

Re: [ Résolu ] Compilation

Unread postPosted: 31 Mar 2025, 18:43
by qzeddqdqdqsd
qzeddqdqdqsd wrote:
Adriweb wrote:Félicitations - Ca a marché sur WSL2 donc ?

Et sinon pour la doc, tu cherches quoi exactement ? Parce que logiquement tout ce qui est disponible est dans les headers


Oui, impec sur WSL2.

En fait, je voulais surtout prendre en main l'écosystème donc j'ai tenté de faire un petit programme de devinette. L'idée est simple : générer un nombre aléatoire, afficher une boîte de dialogue pour entrer un chiffre ou un nombre, et dire si on l'a trouvé.

Mais j'ai pas mal d'erreurs à la compilation, probablement parce que j'utilise des fonctions non supportées ou mal adaptées à la calculatrice. Du coup, je cherche surtout à savoir quel header gère les boîtes de dialogue et les boutons. J'ai vu des programmes impressionnants sur le site, mais je ne sais pas s'ils ont suivi le même processus.

j'ai bien mis Normalement c'est bon :
Code: Select all
#include <libndls.h>
#include <nspireio/nspireio.h>
#include <os.h>


note j'ai des erreurs avec c.printf() ect

Finalement j'ai compris mon erreur fallait juste lire...