Wie lösen (float): relocation truncated to fit: R_AVR_13_PCREL

Gast #1393059
Lesenswert?

Moin,
ich habe eine ganze Reihe von Floatingpoint Berechnungen (siehe Anhang) 
auf einem AVR zu tun. Leider lässt sich der Code nicht compilieren. Der 
Linker meldet:
1
/usr/lib/gcc/avr/4.3.3/../../../avr/lib/avr51/libc.a(atan2.o):../../../libm/fplib/atan2.S:136: relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in /usr/lib/gcc/avr/4.3.3/avr51/libgcc.a(_addsub_sf.o)
2
/usr/lib/gcc/avr/4.3.3/../../../avr/lib/avr51/libc.a(fp_arccos.o):../../../libm/fplib/fp_arccos.S:76: relocation truncated to fit: R_AVR_13_PCREL against symbol `__subsf3' defined in .text section in /usr/lib/gcc/avr/4.3.3/avr51/libgcc.a(_addsub_sf.o)

Sowie noch etwa 5 weiterer solcher Zeilen. Die Suchfunktion und Google 
brachte herraus, dass man die Mathebibliothek einbinden muss. Bei den 
ganzen Berechnungen, die ich dort veranstalte, ist mir das auch klar. 
Habe die Mathebibliothek auch mittels "-lm" angegeben, aber leider ohne 
Erfolg.

Befehl zum Kompilieren
1
avr-gcc -O2 -mmcu=at90can128 -DF_CPU=8000000 -std=gnu99 ./*.c

Das ganze wird bei mir also ohne Makefile kompiliert. Ich benutze 
einfach ein kleines Shellskript.


mfg Emperor_L0ser
Angehängte Dateien:
Gast #1393271
Lesenswert?

Das Problem habe ich mit noch einigen Stolpersteinen mehr gelöst 
bekommen.
Man muss die Mathebibliothek nicht nur angeben, sondern auch an der 
richtigen Stelle.
Dafür muss man den Befehl zum Kompilieren und Linken einzeln angeben, 
sonst steht das "-lm" beim Linken nicht richtig.

für mich sieht das ganze ohne tolles Script usw wie folgt aus.
1
avr-gcc -O2 -mmcu=at90can128 -DF_CPU=8000000UL -Wall -c uart.c
2
avr-gcc -O2 -mmcu=at90can128 -DF_CPU=8000000UL -Wall -c main.c
3
avr-gcc -O2 -mmcu=at90can128  -Wl,-u,vfprintf -lprintf_flt -lm main.o uart.o -lm

mfg Emperor_L0ser

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren