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!
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.