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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.