π
<-

Problème à la compilation

C, C++, ASM...

Problème à la compilation

Unread postby caviar » 21 May 2011, 14:03

Bonjour,

Je souhaite utiliser la fonction sleep() mais il y a une erreur à la compilation. Ci-dessous le code source :

#include

int main(void) {
sleep(2000);
}

Le message d'erreur est le suivant :

$ make
nspire-gcc -Os -Wall -W -c toutnoir.c
toutnoir.c: In function 'main':
toutnoir.c:5:1: warning: control reaches end of non-void function
nspire-ld -nostdlib toutnoir.o -o toutnoir.elf
c:/ti/yagarto/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld.exe: c:/ti/ndless20/sdk/bin/../liblibndls.a(sleep.o): Unknown mandatory EABI object attribute 44
c:/ti/yagarto/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld.exe: failed to merge target specific data of file c:/ti/ndless20/sdk/bin/../liblibndls.a(sleep.o)
c:/ti/yagarto/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld.exe: c:/ti/ndless20/sdk/bin/../liblibndls.a(idle.o): Unknown mandatory EABI object attribute 44
c:/ti/yagarto/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld.exe: failed to merge target specific data of file c:/ti/ndless20/sdk/bin/../liblibndls.a(idle.o)
collect2: ld returned 1 exit status
make: *** [toutnoir.tns] Error 1

Ci dessous le makefile pour information :

GCC = nspire-gcc
LD = nspire-ld
GCCFLAGS = -Os -Wall -W
LDFLAGS = -nostdlib
OBJCOPY := "$(shell which arm-elf-objcopy 2/dev/null)"
ifeq (${OBJCOPY},"")
OBJCOPY := arm-none-eabi-objcopy
endif
EXE = hexeditor.tns
OBJS = hexeditor.o
DISTDIR = ../../calcbin/samples
vpath %.tns $(DISTDIR)

all: $(EXE)

%.o: %.c
$(GCC) $(GCCFLAGS) -c $
$(EXE): $(OBJS)
$(LD) $(LDFLAGS) $^ -o $(@:.tns=.elf)
mkdir -p $(DISTDIR)
$(OBJCOPY) -O binary $(@:.tns=.elf) $(DISTDIR)/$@

clean:
rm -f *.o *.elf
rm -f $(DISTDIR)/$(EXE)


Ca ne marche plus depuis que je suis passé à ndless2.0. J'ai le même genre d'erreur avec la fonction wait_key_pressed(void)

Quelqu'un pourrait t'il m'éclairer ?
User avatar
caviar
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 92%
 
Posts: 18
Joined: 15 May 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: TS

Re: Problème à la compilation

Unread postby Chockosta » 21 May 2011, 14:35

Déjà, à la fin de la fonction main(), il faut mettre un "return 0;"
Ensuite tu peux virer dans le makefile la ligne "LDFLAGS = -nostdlib", qui a peu d’intérêt et surtout qui t'empêche d'utiliser la bibli standard.
Ensuite, Ndless a besoin d'une version plus à jour du compilo, j'ai également eu le problème des "Unknown mandatory object..."
Je t'invite à regarder ici, peut-être trouveras tu la solution. Critor explique très bien. En gros, il faut mettre à jour Yagarto, avec binutils 2.21
User avatar
ChockostaPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 2.2%
 
Posts: 213
Joined: 24 Feb 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Math sup

Re: Problème à la compilation

Unread postby caviar » 21 May 2011, 15:01

Merci pour ton aide Chokosta, la solution était bien de mettre à jour Yagarto avec binutils 2.21.
Merci encore
User avatar
caviar
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 92%
 
Posts: 18
Joined: 15 May 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: TS

Re: Problème à la compilation

Unread postby caviar » 21 May 2011, 15:21

Je me permets de reposer une nouvelle question dans la foulée. J'ai le code source suivant :

#include

int main(void) {
wait_key_pressed();
return 0;
}

Et le message d'erreur suivant :

nspire-ld toutnoir.o -o toutnoir.elf
c:/ti/ndless20/sdk/bin/../liblibndls.a(touchpad.o): In function `touchpad_getinfo':
touchpad.c:(.text+0x100): undefined reference to `is_touchpad'
c:/ti/ndless20/sdk/bin/../liblibndls.a(touchpad.o): In function `touchpad_scan':
touchpad.c:(.text+0x188): undefined reference to `is_touchpad'
collect2: ld returned 1 exit status
make: *** [toutnoir.tns] Error 1

et le makefile suivant :
GCC = nspire-gcc
LD = nspire-ld
GCCFLAGS = -Os -Wall -W
LDFLAGS =
OBJCOPY := "$(shell which arm-elf-objcopy 2/dev/null)"
ifeq (${OBJCOPY},"")
OBJCOPY := arm-none-eabi-objcopy
endif
EXE = toutnoir.tns
OBJS = toutnoir.o
DISTDIR = ../../calcbin/samples
vpath %.tns $(DISTDIR)

all: $(EXE)

%.o: %.c
$(GCC) $(GCCFLAGS) -c $
$(EXE): $(OBJS)
$(LD) $(LDFLAGS) $^ -o $(@:.tns=.elf)
mkdir -p $(DISTDIR)
$(OBJCOPY) -O binary $(@:.tns=.elf) $(DISTDIR)/$@

clean:
rm -f *.o *.elf
rm -f $(DISTDIR)/$(EXE)


D'où vient le problème ?
User avatar
caviar
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 92%
 
Posts: 18
Joined: 15 May 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: TS

Re: Problème à la compilation

Unread postby Lionel Debroux » 21 May 2011, 18:30

Hmm, j'ai déjà  vu cette erreur... Ca n'est pas que tu compiles avec -nostdlib, mais il doit falloir mettre -lndls ?
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6869
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Problème à la compilation

Unread postby ExtendeD » 21 May 2011, 18:50

Peux tu retester une compilation après avoir supprimé les différents fichiers ".o" du dossier system/ du SDK Ndless?
User avatar
ExtendeDPremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 64.1%
 
Posts: 204
Joined: 30 Dec 2004, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: N/A

Re: Problème à la compilation

Unread postby caviar » 22 May 2011, 09:32

Bonjour,

Je viens d'essayer une compilation avec le paramètre -lndls mais rien n'y fait. De même, aucun résultat si je supprime les fichiers *.o du dossier system.

Peux être est-ce un bug de Ndless ?
User avatar
caviar
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 92%
 
Posts: 18
Joined: 15 May 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: TS

Re: Problème à la compilation

Unread postby ExtendeD » 22 May 2011, 10:59

Peux-tu montrer la sortie de la compilation que tu obtiens juste après suppression de *.o de system/ ?
User avatar
ExtendeDPremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 64.1%
 
Posts: 204
Joined: 30 Dec 2004, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: N/A

Re: Problème à la compilation

Unread postby caviar » 22 May 2011, 17:51

Voici le message d'erreur à la compilation :

$ make
nspire-ld toutnoir.o -o toutnoir.elf
c:/ti/ndless20/sdk/bin/../liblibndls.a(touchpad.o): In function `touchpad_getinfo':
touchpad.c:(.text+0x100): undefined reference to `is_touchpad'
c:/ti/ndless20/sdk/bin/../liblibndls.a(touchpad.o): In function `touchpad_scan':
touchpad.c:(.text+0x188): undefined reference to `is_touchpad'
collect2: ld returned 1 exit status
make: *** [toutnoir.tns] Error 1
User avatar
caviar
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 92%
 
Posts: 18
Joined: 15 May 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: TS

Re: Problème à la compilation

Unread postby ExtendeD » 22 May 2011, 20:16

Peux-tu faire un autre test? Désolé pour ce ping-pong, tu es le premier a reporter ce problème et il n'est pas reproduisible chez moi. C'est malheureusement la seule manière de diagnostiquer ce qui ne va pas.

1) Que retourne la commande "nspire-gcc --version"?

2)
- Edite le fichier bin/nspire-gcc, et remplace la ligne "(cd "$DIRNAME/../system" make -s all)" par "(cd "$DIRNAME/../system" make all)"
- Supprime une nouvelle fois les fichier .o dans le dossier system/
- Qu'indique alors une nouvelle compilation?
User avatar
ExtendeDPremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 64.1%
 
Posts: 204
Joined: 30 Dec 2004, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: N/A

Next

Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1492 utilisateurs:
>1478 invités
>8 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)