Forum: Compiler & IDEs Bibliothek Funktion beim linken nicht gefunden


von Thomas Motz (Gast)


Angehängte Dateien:

Lesenswert?

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

von Jörg Wunsch (Gast)


Lesenswert?

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.

von Thomas Motz (Gast)


Lesenswert?

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

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.