Da hast du Recht, eine Library wäre auf jeden Fall sinnvoll (ich arbeite seit ca. einem halben Jahr mit Libraries für den ASURO und den YETI). Als Beispiel, meine Batch-Datei zur Erzeugung meiner YETI Library. Wichtig ist, dass die Object-Datei (*.o), in der sich die main()-Funktion befindet, vorher aus dem Projektordner gelöscht wird. Zur Projekterzeugung benötigt man ja eine main(), da sonst der Compiler meckert, aber in der Library hat die main()-Funktion nichts zu suchen! Beim Erstellen einer Library muss sich jede Funktion in einer eigenen Source-Datei bzw. Object-Datei befinden, da sonst die anderen, nicht benötigten Funktionen, die sich evtl. in der Datei befinden, später in das Projekt mit eingebunden werden! Der Linker bindet immer alle Funktionen die sich in einer Object-Datei befinden mit in das Projekt ein, nicht nur die benötigte/n Funktion/en. Deshalb sollte jede Source-Datei, die für eine Library geschrieben wird, auch nur jeweils eine Funktion beinhalten damit später auch wirklich nur die benötigten Funktionen in das Projekt eingebunden werden!
REM
REM ************************************************** **
REM der Name der Library die erzeugt werden soll
REM hier libyeti.a (ACHTUNG! .a nicht vergessen)
REM ************************************************** **
SET LIBRARY=libyeti.a
REM
REM ************************************************** **
REM der Name der Datei in der sich die main()-Funktion
REM befindet hier yeti_lib.o (yeti_lib.c)
REM ************************************************** **
SET MAIN_FUNKTION=yeti_lib.o
REM
REM ************************************************** **
REM der Name der Dump-Datei für die *.o-Dateien
REM ************************************************** **
SET LIBRARY_DUMP=libyeti_obj.dump
REM
REM ************************************************** **
REM alte Library mit del löschen
REM ************************************************** **
del %LIBRARY%
REM
REM ************************************************** **
REM die Datei in der sich main() befindet löschen
REM
REM A C H T U N G !
REM
REM die Library darf keine main()-Funktion enthalten
REM ************************************************** **
del %MAIN_FUNKTION%
REM
REM ************************************************** **
REM diese Zeilen erzeugen die Library
REM Infos zu den Programmen (avr-*) in der Doku zu WINAVR
REM ************************************************** **
c:\Winavr\bin\avr-objdump -h *o > %LIBRARY_DUMP%
c:\Winavr\bin\avr-ar r %LIBRARY% *.o
c:\Winavr\bin\avr-ar t %LIBRARY%
REM
REM ************************************************** **
Gruß, Peter (Ronny10)
Lesezeichen