www.mikrocontroller.net

Forum: Compiler & IDEs Linker spinnt


Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das war's!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.