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.
-lm? von einem -lm weiß ich nix, wo würde das hingehören?
In die Linkeroptionen. Siehe https://savannah.nongnu.org/bugs/?func=detailitem&item_id=3485 Ich halte das für das gleiche Problem.
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...
Benutzt du C++? Da ist noch ein Bug offen, der sehr ähnlich zu deinem Verhalten aussieht...
Nein, ich benutze C, ohne ++, was wär das für ein Bug?
Bekommst du ein minimales Beispiel zusammen, mit dem man den Fehler reproduzieren kann?
p.s.: Kannst ja mal ein -v in die Kommandozeile vom GCC mit aufnehmen und dann die Ausgabe hier posten.
Mit -v gibt er folgendes aus (siehe Dateianhang) Ja, -mmcu ist auch richtig gesetzt.
Da sehe ich aber nicht, dass die m.lib dazu gelinkt wird. Kannst Du mal das makefile posten, bitte?
-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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.