Linker-Fehler

Gast #2298569
Lesenswert?

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
Gast #2298650
Lesenswert?

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!
Moderator Persönliche Seite #2298698
Lesenswert?

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.
Gast #2298713
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren