Diskussion:Beispiel Makefile
Ich benutze WinAVR unter win2000 und avr-gcc unter Linux. Soll ich meine makefiles auch in dieses Wiki laden ? Wenn ja, wohin am Besten? HJHerbert 08:52, 4. Feb 2007 (CET)
Habe ich jetzt einfach mal gemacht :-) HJHerbert 05:52, 23. Feb 2007 (CET)
Makefile für Anfäger ?!?
Ganz ernsthaft: Wie soll das Makefile von Beispiel 1 für Anfänger sein, das ausgedurckt 8 Seiten lang wäre? 90% davon versteht ein Anfänger sowieso nicht und 99% sind davon für einen Anfänger auch überflüssig. In dem Makefile werden alle Eventualitäten berücksichtigt, was der Lesbarkeit absolut nicht gut tut.
Als (fast) gutes Beispiel will ich mal das Makefile hieraus anführen: http://www.roboternetz.de/wissen/index.php/Avr-gcc_und_avrdude_installieren
Mit 16 Zeilen kurz und knackig, sodass man sofort sieht, was welcher Teil macht. Leider ist es etwas zu knackig, sodass man als Anfänger nicht weiterkommt, wenn man weitere .c Dateien includen will.
Nachdem ich jetzt das besagte Makefile aus Beispiel 1 mehrmals durchgegangen bin um zu sehen wie es da gemacht wird, habe ich es trotzdem nicht herausgefunden und schreibe daher diesen Text.
Könnte ich es selber würde ich dies hier nicht schreiben sondern selbst das Makefile hier einstellen. Daher würde ich mich freuen, wenn einer, der Ahnung davon hat, ein ganz simpeles Makefile für Anfänger(!) erstellen könnte, was man dann auch auf Anhieb versteht und von dem man nicht durch tausende Zeilen und fast genauso vielen Einstellmöglichkeiten erschlagen wird.
Hier noch mein momentanes Makefile. Wie geschrieben möchte ich eine weitere .c Datei (lcd-routines.c) includieren, weiß aber nicht, wie ich das anstellen mus...
<c>
TARGET=main
MCU=atmega16
F_CPU=16000000
OPT=s
CFLAGS =-g -mmcu=${MCU} -Wall -Wstrict-prototypes -O${OPT} -mcall-prologues -save-temps -fno-common
CFLAGS += -DF_CPU=${F_CPU}UL
- Workaround fuer "/usr/libexec/gcc/avr/ld: cannot open linker script file ldscripts/avr5.x: No such file or directory"
CFLAGS += -L/usr/i686-pc-linux-gnu/avr/lib
- AVRDUDE
AVRDUDE_ISP=avrispv2 AVRDUDE_TARGET=${MCU} AVRDUDE_PORT=usb
- Programme
CC=/usr/bin/avr-gcc OBJCOPY=/usr/bin/avr-objcopy AVRDUDE=/usr/bin/avrdude
all: ${TARGET}.hex
${TARGET}.hex : ${TARGET}.elf ${OBJCOPY} -j .data -j .text -O ihex $< $@
${TARGET}.elf: ${TARGET}.o ${CC} ${CFLAGS} -o $@ -Wl,-Map,${TARGET}.map $<
${TARGET}.o : ${TARGET}.c ${CC} ${CFLAGS} -c $<
load: ${TARGET}.hex ${AVRDUDE} -p ${AVRDUDE_TARGET} -c ${AVRDUDE_ISP} -P ${AVRDUDE_PORT} -U flash:w:${TARGET}.hex -v
clean: rm -f *.o *.map *.elf *.hex *.s *.i </c>
Danke schon mal!