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