Hallo zusammen, nachdem ich mich nun auf dem AVR in die Welt der Hochsprache begeben habe, hänge ich nunmehr an einem Low Level Problem. Folgendes passiert: Ich schreibe ein C-Module, das sowohl 'printf' (libprintf_flt) also auch 'sqrt' (libm) aufruft. Ich bekomme einen undefined reference auf 'sqrt', sonst nichts. Wenn ich den 'printf'-Aufruf entferne, aber 'sqrt' drin lasse kann ich linken. Wo ist Problem? Aufruf des Linkers mit: avr-gcc -mmcu=atmega128 -Wl,-Map,host.map,-u,vfprintf -lprintf_flt -lm -g -o host.elf modul1.o modul2.o Die Module werden separat übersetzt Kommt das jemanden bekannt vor?
Falsche Reihenfolge. Libs (-lm) immer ganz hinten angeben, da sie nur danach durchsucht werden, ob sie bislang ungelöste Referenzen auflösen können. Da Du die Objekte, die die ungelöste Referenz zu sqrt() erzeugen, erst nach der lib hast, wird diese nicht mehr aufgelöst.
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.