AVR C Linker Error

OP #4454810
Lesenswert?

Hallo,
Der Linker bringt bei meinem Projekt die unten angehangenen Fehler. Ich 
hatte das schon mal, da hatte -lm im Libraries-eintrage gefehlt und die 
Sache war behoben. Nur diesmal klappt es nicht.
Weiss vielleicht jemand Rat?
Vielen Dank schon mal.

Ich benutze Eclipse und WINAVR 20100110.




Invoking: AVR C Linker
avr-gcc -Wl,-Map,vario_gleitwinkel.map -mmcu=atmega16 -im Libero 
"vario_gleitwinkel.elf"  ./src/BMP180.o ./src/DEM16216.o ./src/anemo.o 
./src/funktionen.o ./src/gps.o ./src/main.o ./src/tasten.o 
./src/twimaster.o ./src/uart.o
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\lib 
c.a(log.o):  In function `log':
(.text.avr-libc.fplib+0x46): relocation truncated to fit: R_AVR_13_PCREL 
against symbol `__addsf3' defined in .text section in 
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_addsub_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\lib 
c.a(log.o):  In function `log':
(.text.avr-libc.fplib+0x4e): relocation truncated to fit: R_AVR_13_PCREL 
against symbol `__addsf3' defined in .text section in 
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_addsub_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\lib 
c.a(log.o):  In function `log':
(.text.avr-libc.fplib+0x6a): relocation truncated to fit: R_AVR_13_PCREL 
against symbol `__floatsisf' defined in .text section in 
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_si_to_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\lib 
c.a(pow.o):  In function `pow':
(.text.avr-libc.fplib+0x94): relocation truncated to fit: R_AVR_13_PCREL 
against symbol `__mulsf3' defined in .text section in 
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mul_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\lib 
c.a(inverse.o):  In function `inverse':
(.text.avr-libc.fplib+0xc): relocation truncated to fit: R_AVR_13_PCREL 
against symbol `__divsf3' defined in .text section in 
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_div_sf.o)
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\lib 
c.a(modf.o):  In function `modff':
(.text.avr-libc.fplib+0x3e): relocation truncated to fit: R_AVR_13_PCREL 
against symbol `__subsf3' defined in .text section in 
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_addsub_sf.o)
make: *** [vario_gleitwinkel.elf] Error 1
ich verwende WinAVR  - 20100110
Persönliche Seite #4454826
Lesenswert?

Ralph F. schrieb:
> Ich hatte das schon mal, da hatte -lm im Libraries-eintrage
> gefehlt und die Sache war behoben. Nur diesmal klappt es nicht.
>
> Ich benutze Eclipse und WINAVR 20100110.
>
> avr-gcc -Wl,-Map,vario_gleitwinkel.map -mmcu=atmega16 -im Libero
> "vario_gleitwinkel.elf"  ./src/BMP180.o ./src/DEM16216.o ./src/anemo.o
> ./src/funktionen.o ./src/gps.o ./src/main.o ./src/tasten.o
> ./src/twimaster.o ./src/uart.o

Und wo ist das -lm?

Ich würd dir eine Version der Tools ans Herz legen, die diesen Bug nicht 
mehr hat, d.h. 4.7.2+

https://gcc.gnu.org/PR54461

Und falls es die 4.7 ist, darauf achten, dass configure mit 
--with-avrlibc ausgeführt wurde (bei 4.8+ ist diese Option an per 
default).
Persönliche Seite #4454852
Lesenswert?

...weiters verwendet die avr-libc RJMP ohne sicherzustellen, dass 
Sprungziele tatsächlich per RJMP erreichbar sind:

https://savannah.nongnu.org/bugs/?33698

Behoben ist dieses Problem erst mit der avr-libc 1.8.1.  Als Work-Around 
kannst du eine eigene Linker-Description verwendet, die garantiert, dass 
entsprechende .text Input-Sections der avr-libc dicht beieinander 
liegen.
OP #4455665
Lesenswert?

Hallo,

vielen dank Johann, aus den angehangen links habe ich rausbekommen das 
die math.h und deren funktionen diesen Fehler auftreten lässt. Wenn ich 
weder float noch eine math funktion nehme ist der Fehler weg.
Bez. des vorgeschlagenen Work-Around, hänge ich voll in der Luft. Ich 
benutze WINAVR 20100110 (die "neuste" version). Die avrlibc hat die 
versionsnummer 1.6.7. , der gcc compiler ist version 4.3.3.
aber was ich genau machen muss ..?
Ich werd noch ein bisschen lesen.
gruss
bis bald

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