Forum: Compiler & IDEs sqrt funktioniert nicht, kein linken möglich, arm-elf


von Franz Göbbel (Gast)


Lesenswert?

Folgende Meldung spukt der GCC bei mir aus? Was bedeutet diese 
Fehlermeldung? Wieso ist in der sqrt Funktion eine undefinierte 
Referenz? math.h habe ich eingebunden und die libm.a wird auch 
gelinkt...


libm.a(w_sqrt.o): In function `sqrt':
../../../../../newlib-1.14.0/newlib/libm/math/w_sqrt.c:83: undefined 
reference to `__errno'
../../../../../newlib-1.14.0/newlib/libm/math/w_sqrt.c:86: undefined 
reference to `__errno'


danke!

von Franz Göbbel (Gast)


Lesenswert?

Okey es hat geholfen:

$(LD) $(LFLAGS) -o main.out $(OBJECTS) libm.a libc.a libgcc.a

statt

$(LD) $(LFLAGS) -o main.out $(OBJECTS) libc.a libm.a libgcc.a

zu nutzen.

Wieso? Danke!

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

wegen der Linkreihenfolge. Undefinierte Symbole (aus Bibliotheken) 
werden nur mit den Symbolen "gefüllt" die beim Einbinden der Bibliothek 
bereits definiert sind. Und da __errno vermutlich in der libc definiert 
ist, du die libm aber vorher einbindest wird das Symbol nicht aufgelöst 
und der Linker haut dir das dann um die Ohren :-)

Matthias

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
Noch kein Account? Hier anmelden.