Hallo zusammen, bin gerade von AVR-Studio auf Eclipse umgestiegen. Hat bis jetzt gut funktioniert. Jetz wollte ich ausnahmsweise die funktions sprintf() benutzen und schon bringt mir der Linker einen Fehler Ich hab die stdio.h eingebunden. Linker Output: Invoking: AVR C Linker avr-gcc -Wl,-Map,ArbGenerator2.1.map -mmcu=atmega128 -o "ArbGenerator2.1.elf" ./Bitmap.o ./Draw.o ./F16X8A.o ./F16X8B.o ./F16X8C.o ./F8X6.o ./F8X8A.o ./F8X8B.o ./Fontsoft.o ./Main.o ./T6963.o ./circle.o ./data.o ./f6x4fv.o ./f6x5fv.o ./f8x6fv.o ./f8x8fv.o ./globals.o ./hardwaretreiber.o ./uart.o ./utilitys.o c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr51\li bc.a(fp_powsodd.o): In function `__fp_powsodd': (.text.fplib+0x10): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr51\libgcc.a(_mul_sf.o) c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr51\li bc.a(fp_powsodd.o): In function `__fp_powsodd': (.text.fplib+0x20): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr51\libgcc.a(_mul_sf.o) make: *** [ArbGenerator2.1.elf] Error 1 Leider kann ich nicht lokalisieren wo der Fehler liegt. Wenn ich sprintf() auskommentiere sind die Fehler weg Kann da jemand drüberschaun oder weis einer eine Möglichkeit den Fehler besser einzugrenzen? Danke! Benedikt Lippert
Hallo Building target: ArbGenerator2.1.elf Invoking: AVR C Linker avr-gcc -Wl,-Map,ArbGenerator2.1.map -lm -mmcu=atmega128 -o "ArbGenerator2.1.elf" ./Bitmap.o ./Draw.o ./F16X8A.o ./F16X8B.o ./F16X8C.o ./F8X6.o ./F8X8A.o ./F8X8B.o ./Fontsoft.o ./Main.o ./T6963.o ./circle.o ./data.o ./f6x4fv.o ./f6x5fv.o ./f8x6fv.o ./f8x8fv.o ./globals.o ./hardwaretreiber.o ./uart.o ./utilitys.o c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr51\li bc.a(fp_powsodd.o): In function `__fp_powsodd': (.text.fplib+0x10): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr51\libgcc.a(_mul_sf.o) c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr51\li bc.a(fp_powsodd.o): In function `__fp_powsodd': (.text.fplib+0x20): relocation truncated to fit: R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr51\libgcc.a(_mul_sf.o) make: *** [ArbGenerator2.1.elf] Error 1 Hast du das so gemeint? Funktioniert wieder nicht. Danke aber!
Benedikt Lippert schrieb: > Hast du das so gemeint? Nein, denn er schrieb: "*am Ende* der Linkerzeile". Bei dir steht's am Anfang, dort wird es (effektiv) ignoriert.
Benedikt Lippert schrieb: > Hast du das so gemeint? Nein, meinte er nicht. Er meinte ans Ende der Zeile, also hinter die ganzen o-Files.
Hallo Oh sorry nun ist es am Ende und es funktioniert. Was bedeutet der Befehl -lm? Gibts da irgendwo eine Erklärung zu den Linker Einstellungen? Vielen Dank! mfg Benedikt
Benedikt Lippert schrieb: > Was bedeutet der Befehl -lm? Dass die Bibliothek libm.a nach Symbolen zu durchsuchen ist, die zu diesem Zeitpunkt in der Symboltabelle "global undefined" sind. Enthält die gerade durchsuchte Bibliothek einen Modul, der ein solches Symbol auflöst, dann wird dieser Modul komplett dazu gelinkt und die aktuelle Bibliothek nochmals durchsucht, falls der Modul neue "global undefined"-Symbole verursacht hat. Damit ist auch klar, warum die Option am Anfang der Kommandozeile keine Wirkung hat: zu diesem Zeitpunkt gibt es noch kein einziges Symbol mit "global undefined" in der Symboltabelle. (Einzige mögliche Ausnahme hier: wenn man ein solches Symbol durch die Linkeroption -u selbst auf der Kommandozeile bereits erzeugt.) > Gibts da irgendwo eine Erklärung zu den Linker Einstellungen? Im Linker-Handbuch der GNU binutils.
Hallo Danke für die Erklärung. Im Groben versteh ich was der Befehl macht. Muss mich mal genau in den "Linker" einlesen. Bin doch nur E-Technikstudent und kein Informatiker^^ mfg Benedikt Lippert
Benedikt Lippert schrieb: > Bin doch nur E-Technikstudent und kein Informatiker^^ Ich habe auch "nur" Elektroniktechnologie studiert. ;-)
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.