mikrocontroller.net

Forum: Compiler & IDEs Error bei Divisionen mit AVR (__udivmodqi4)


Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hab ein Problem beim Programmieren meines ATmega32. Beim Kompilieren
erscheint der Fehler: "relocation truncated to fit R_AVR_13_PCREL
__udivmodqi4"

Es ist mir schon klar, dass das mit irgendwelchen Divisionen zu tun
haben muss. In meinem Programm kommen aber nur ca. 15 Divisionen vor,
immer nur char-Divisionen, keine Divisionen durch null. Entferne ich
aber einige beliebige Divisionen,tritt der Fehler nicht mehr auf. Dabei
ist es allerdins egal, welche Division ich entferne, also syntaktisch
ist da kein Fehler drin.

Ich halte es auch für ausgschlossen, dass das Programm zu lang ist, es
hat genau 15 der 32 möglichen KB. Ein Timing-Problem aufgrund von ISR`s
oder ähnlichem kann ich ebenfalls ausschließen, da ich keine
zeitkritischen Einflüsse im System habe.

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

Bewertung
0 lesenswert
nicht lesenswert
Hast du -lm mit angegeben?

Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-lm? von einem -lm weiß ich nix, wo würde das hingehören?

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

Bewertung
0 lesenswert
nicht lesenswert
In die Linkeroptionen.

Siehe

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

Ich halte das für das gleiche Problem.

Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, hab jetzt "MATH_LIB = -lm" in die Makefile eingefügt, hat aber
leider nix gebracht.
Ebenfalls stdlib.h inkludiert, hat ebenso keinen Erfolg erbracht...

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

Bewertung
0 lesenswert
nicht lesenswert
Benutzt du C++?  Da ist noch ein Bug offen, der sehr ähnlich
zu deinem Verhalten aussieht...

Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ich benutze C, ohne ++, was wär das für ein Bug?

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

Bewertung
0 lesenswert
nicht lesenswert
Bekommst du ein minimales Beispiel zusammen, mit dem man den
Fehler reproduzieren kann?

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

Bewertung
0 lesenswert
nicht lesenswert
p.s.: Kannst ja mal ein -v in die Kommandozeile vom GCC mit
aufnehmen und dann die Ausgabe hier posten.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Überall das -mmcu=atmega32 eingetragen?

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

Bewertung
0 lesenswert
nicht lesenswert
Mit -v gibt er folgendes aus (siehe Dateianhang)

Ja, -mmcu ist auch richtig gesetzt.

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da sehe ich aber nicht, dass die m.lib dazu gelinkt wird.

Kannst Du mal das makefile posten, bitte?

Autor: Berni (Gast)
Datum:
Angehängte Dateien:
  • mf.txt (1,86 KB, 92 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
m.lib?

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

Bewertung
0 lesenswert
nicht lesenswert
-lm ans Ende der Kommandozeile hinzufügen, die den Linker aufruft.

Dein Makro MATH_LIB wird einfach gar nicht benutzt.  Du musst das
-lm in LIBS eintragen in deinem Makefile.

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.