Bibliothek Funktion beim linken nicht gefunden

Gast #77180
Hallo,

habe versucht, eine Bibliothek (mit avr-ar erzeugt) mit dem
main-Programm zu linken.

Die einzige enthaltene Lib-Funktion 'set_time' kann ich mit
avr-objdump in der lib-Symbol-Tabelle auch finden.

Beim Linken mit main kommt dann die Fehlermeldung
/main.c:18: undefined reference to `set_time'
so, als sei die Funktion in der Lib nicht vorhanden.

Zunächst hatte ich es unter Win2K probiert, nach dem Wechsel auf einen
Win98SE Rechner hat es dann gestern zunächst funktioniert.
(Dummerweise habe ich mir die zu diesem Zeitpunkt kompilierte Lib nicht
aufgehoben)

Nach einer Veränderung der Lib kam dann plötzlich wieder die obige
Fehlermeldung.

Hat jemand eine Idee, was bei der Erzeugung der Lib oder beim Linken
da schiefgeht?

Danke und Gruß
Thomas
Angehängte Dateien:
Gast
Ohne vollständige Kommandozeile, die zum Linke benutzt wird, ist das
nicht zu ermitteln.  Insbesondere solltest Du daran denken, daß
Bibliotheken vom Linker nur dazu benutzt werden, offene
Symbolreferenzen aufzulösen, d. h. er bindet einen Objektmodul einer
Bibliothek dann und nur dann ein, wenn dieser Modul eine bislang
unbekannte Referenz befriedigt.  Da die Objektmodule und Bibliotheken
in der Reihenfolge ihres Auftretens im Linker-Kommando abgearbeitet
werden, müssen sinnvollerweise alle explizit benannten Objektmodule
(*.o Dateien) vor allen Bibliotheken stehen, da es ja die .o's sind,
die die offenen Referenzen erstmal erzeugen müssen (sieht man von der
Möglichkeit mal ab, mit -Wl,-u... zwangsweise eine offene Referenz zu
erzeugen).

Außerdem ist natürlich noch die Frage, wie die Bibliothek erzeugt bzw.
nach der Änderung aktualisiert wird, auch dabei könnte man was flasch
machen: wenn Du bspw. beim Aktualisieren eines Moduls aus Versehen die
ganze Bibliothek neu anlegst, in die neue Bibliothek aber nur noch den
aktualsierten Modul aufnimmst, wären hernach alle anderen Moduln
(logischerweise) nicht mehr drin enthalten.
Gast
Danke Jörg, Du liegst natürlich richtig. Die Reihenfolge war es.
Habe es gerade ausprobiert (mit leichter Schamesröte im Gesicht...)

Aufgrund des zweiten Tipps lese ich mir aber gleich noch mal das Manual
durch.

Gruß
Thomas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.