Forum: Mikrocontroller und Digitale Elektronik Was sind makefiles?


von Axel (Gast)


Lesenswert?

habe bis jetzt avr controller immer mit assembler programmiert, will 
jetzt aber aufgrund eines schulprojektes aus c/c++ umschwenken..
nun bitte keine diskusion ob dies sinnvoll ist, mein Lehrer hat mir den 
auftrag gegeben und ich ich kann daran nichts ändern:D
bis jetzt habe ich ja die programme im avr studio geschrieben, 
assembliert und auf den microcontroller übertragen. Jetzt arbeite ich 
mich grad durch die c anleitung dieser seite und lese etwas von 
makefiles...kann mir nun jemand detailliert aber doch wie für einen 
idioten beschreiben was diese makefiles sind und was sie tun?

Dankeschön:)

von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

Das sind Kochanleitungen für dem Compiler was er machen soll und in 
welcher Reihenfolge.

Das macht mittlerweile das AVR Studio von alleine, sodass Du dich darum 
vorerst nicht kümmern brauchst.

Mach einfach ein C Projekt mit dem Wizzard auf und dnann macht der auch 
den Makefile.




Axel

von Axel (Gast)


Lesenswert?

vielen dank:))

von Georg A. (georga)


Lesenswert?

http://www.gidf.de/

;)

Makefiles sind Beschreibungsdateien für das Programm "make". Damit kann 
man Compiler, Linker und andere Tools (Avrdude, ...) so aufrufen, dass 
Abhängigkeiten berücksichtigt werden (zB. .c -> .o -> exe -> srec -> 
flashtool).

Makefiles sind insb. für Mausschubser am Anfang etwas 
gewöhnungsbedürftig, aber irgendwann kann man nicht mehr ohne...

von Wusel D. (stefanfrings_de)


Lesenswert?

C Programme bestehen in der Regel aus vielen Quelltextdateien. Der C 
Compiler compiliert jede einzeln. Wenn Dein Programm auf zehn *.c 
Dateien besteht, musst Du den Compiler zehn mal aufrufen. Als Ergebnis 
erhälst du für jede *.c Datei eine Objektdatei *.o, die den erzeugten 
Binärcode enthält. Der Linker fügt die Objekt-Dateien (und ggf. externe 
Libraries) zu einem ausführbaren Programm (z.B. eine *.exe Datei) 
zusammen.

Bei Mikrocontrollern erzeugt der Linker eine *.hex Datei für den 
Programmieradapter.

Das Programm make hat nun die Aufgabe, den Compilier- und Link-Vorgang 
zu automatisieren. Wenn Du make benutzt, brauchst Du nicht jede *.c 
Datei manuell einzeln zu compilieren.

Das könnte man auch mit einer Batch Datei machen, aber die laufen nicht 
unter Linux. Außerdem bringt Make den Vorteil mit, bei 
Programmänderungen nur die veränderten Dateien zu compilieren.

Das "Makefile" ist eine Datei, die exakt so heissen muss. Im Makefile 
steht drin, welche Quelltextdateien zum Programm gehören. Durch den 
Einsatz von Make reduziert sich der Compilier- und Link-Vorgang zu einem 
simplen "make" Kommando.

Das war jetzt etwas vereinfacht, sollte aber trotzdem helfen, denn Sinn 
von Make zu verstehen.

Die Details entnimmst Du am Besten der Original Doku von GNU Make 
(http://www.gnu.org/software/make/manual/make.html). Aber schau Dir 
erstmal ein Tutorial an.

Eine Beispieldatei für AVR Projekte findest Du in meinem Buch 
http://stefanfrings.de/mikrocontroller_buch/index.html Band 2.

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.