PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eigene Lib nach asuro lib vorbild



AppeL
12.07.2008, 01:03
Hi, ich habs trotz absoluter Ahnungslosigkeit was makefiles etc angeht geschafft die aktuelle Version der Asuro Lib hier ausm Forum zu konfigurieren und kann sie benutzten \o/

Ich hab in meinem momentanen Programm auch noch n paar eigene Funktionen, die ich auch später nicht missen möchte und habe daher vor die in eine Extradatei auszulagern, die ich dann übers Makefile einbinde. Das würde ich vielleicht sogar noch schaffen, allerdings hab ich gelesen, dass die momentane AsuroLib so gebaut ist, das die Funktionen nur eingebaut werden, wenn sie im Programm auch wirklich genutzt werden (irgendwas mit objekten o_O?)

Kann ich das auch auf einfachem Wege so machen, dass ich ne persönliche Lib mit meinen Funktionen erstelle und die dann auch einbinden lasse, wenn sie aufgerufen werden?

m.a.r.v.i.n
14.07.2008, 10:24
Hallo AppeL,

ganz so ist es nicht. Es stimmt, die Asuro Lib ist eine sogenannte Objekt Library. Die Funktionen wurden in diverse Source Files aufgesplittet und das ganze dann zu einer Library zusammengepackt. Wenn der Linker so eine Lib einbindet, werden aber alle Funktionen aus dem entsprechenden Sourcefile eingebunden, auch wenn nur eine davon wirklich verwendet wird. Kurz gesagt, müßte man jede Funktion in ein eigenes Sourcefile packen, dann wäre es wirklich so, dass nur benutzte Funktionen eingebunden werden.

Der Trick mir der Objekt Library steckt im Makefile der AsuroLib
Du kannst dir einfach das Makefile anpassen und die Objekt Files durch deine eigenen ersetzen (für jedes c-File das entsprechende o-File)


OBJECTS = globals.o adc.o adc_low.o encoder.o encoder_low.o i2c.o leds.o lcd.o\
motor.o motor_low.o my_motor_low.o print.o printf.o rc5.o sound.o switches.o\
time.o uart.o ultrasonic.o version.o


Andere AVR Compiler können das auch ohne Objekt Libraries. CodeVisionAVR (http://www.hpinfotech.ro/html/cvavr.htm) z.B. optimiert alle Funktionen und Variablen weg, die nicht benötigt werden.
Dafür kostet die Vollversion auch 150€.

Gruß Peter