www.mikrocontroller.net

Forum: Compiler & IDEs Fehlermeldungen


Autor: Pete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekomme folgende Fehlermeldungen mit AVR Studio 4.12 SP3 Build 90
beim Linken:


C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fmod. 
o):
In function `fmod':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
`__divsf3' defined in .text section in
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_div_sf.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fmod. 
o):
In function `fmod':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
[...(Rest gelöscht)]

Hat jemand eine Ahnung, was das Problem ist und wie es zu lösen ist?

Autor: Isegrimm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Habe ebenfalls die Fehlermeldung.
Das scheint ein Bug im gcc oder linker zu sein.

Ausgelöst wurde der Fehler bei mir durch eine einzige Zeile:

if(float==anotherFloat)
  ...

Weiß jemand wie man das fixen kann ?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indem man beim Linken -lm mit angibt.

Autor: Isegrimm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !
Die option war drin. Hier die gesamte Fehlermeldung:

avr-c++.exe -mmcu=atmega32 -Wl,-u,vfprintf -lprintf_flt -lm foo.o -o
foo.elf
C:/Programmes/Atmel/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/ 
avr5\libm.a(modf.o):
In function `modf':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
`__addsf3' defined in .text section in
C:/Programme/Atmel/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_addsub_sf.o)


Gruß

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Bibliothek, die vor dem eigentlichen Objektfile angegeben
wird, dessen ungeklärte Externreferenzen eigentlich in der
Bibliothek aufgelöst werden sollen, ist umsonst.  (Ausnahme:
das vfprintf() wird aus der libprintf_flt.a genommen, da für
dieses Symbol mittels -u zwangsweise eine undefinierte Referenz
erzeugt worden ist.)

Schreib das -lm ganz ans Ende der Linkerkommandozeile, und es
wird funktionieren.

Dass es ohne -lm nicht funktioniert ist ein bekannter Bug:

https://savannah.nongnu.org/bugs/?func=detailitem&...
https://savannah.nongnu.org/bugs/?func=detailitem&...

(Einer von den beiden...)  Leider ist der praktisch nicht ohne
Neuschreiben der Mathematik-Bibliothek zu lösen.

Autor: Isegrimm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, super !
Habe jetzt im AVR-Studio bei Project Options einfach bei "link with
these Objects" die libm.a angegeben.
Seitdem funktioniert es nicht nur, sondern der erzeugte code ist sogar
10% kleiner als vorher!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.