mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie lösen (float): relocation truncated to fit: R_AVR_13_PCREL


Autor: Emperor_L0ser (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
/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)
/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
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

Autor: Emperor_L0ser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
avr-gcc -O2 -mmcu=at90can128 -DF_CPU=8000000UL -Wall -c uart.c
avr-gcc -O2 -mmcu=at90can128 -DF_CPU=8000000UL -Wall -c main.c
avr-gcc -O2 -mmcu=at90can128  -Wl,-u,vfprintf -lprintf_flt -lm main.o uart.o -lm

mfg Emperor_L0ser

Autor: Benjamin Kaindl (2mkx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wunderbar,
einmal ins Makefile -lm ergänzt, so dass es vor dem *.elf Parameter 
steht und schon gehts :D

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.