Was ist "makefile"?!



  • ein kumpel hatte mich drauf angesprochen ob ich ihm bei c-programmierung helfen könnte. er würde was mit "makefile" machen, doch leider weiß ich nicht was das ist und was es macht.
    könnt ihr mir helfen?!

    mfg cygnus



  • Quasi eine Batchdatei für Compiler und Linker, damit man in der Commandozeile nicht jedesmal soviel schreiben muss, wenn man neu compiliert.
    http://www.ijon.de/comp/tutorials/makefile.html



  • Was für Steinzeitmenschen, die noch nie was von IDEs mit Projektverwaltung gehört haben. 🙄



  • oder zum kompilieren für plattformen für dies keine IDEs gibt



  • eine mach datei



  • Ich fand das tutorial auf http://www.eng.hawaii.edu/Tutor/Make/ ziemlich brauchbar, weil es auch den grundsätzlichen Ablauf einer Kompilation erklärt.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Sovok schrieb:

    oder zum kompilieren für plattformen für dies keine IDEs gibt

    Quatsch.

    Makefiles gibt es auch unter Windows. Sogar VC++ kann welche erzeugen. MIt dem Free-Kompiler von MS muss man er sogar wenn man nicht alles auf der konsole eintippen will. Auch QT unter Windows erzeugt sowas wie Makefiles.

    Makefiles verwendet man um jemanden ein Programm (Source) zu verfügung zu stellen ohne das dieser Wissen muss mit welcher IDE (falls überhaupt) es erstellt wurde.

    Fast jedes Linux-Programm wird aus dem Sourcen mit einem Makefile erstellt.
    Dadür gibt es dann das Script configure welche die Abhängigkeiten des aktuellen System prüft und eine Fehler auswirft wenn eine bestimmte Lib nicht vorzhanden ist oder eben dann ein Makefile erstellt. Kompiliert wird dann einfach mit
    make
    make install

    Makefile soll das kompilieren erleichtern.
    Hat ein Source 100te Dateien müsste man auch 100te kompielerzeilen schreiben um es zu erstellen.

    Siehe Kernelkompilieren bei Linux.
    Der Kernel wird einfach mit make erstellt und dann aus den X-Anzahl Sourcedateien eine Kerneldatei erstellt.



  • Unix-Tom schrieb:

    Siehe Kernelkompilieren bei Linux.
    Der Kernel wird einfach mit make erstellt und dann aus den X-Anzahl Sourcedateien eine Kerneldatei erstellt.

    So geht das mit _jedem_ Programm unter Linux 🙂



  • Unix-Tom schrieb:

    Sovok schrieb:

    oder zum kompilieren für plattformen für dies keine IDEs gibt

    Quatsch.

    Makefiles gibt es auch unter Windows. Sogar VC++ kann welche erzeugen. MIt dem Free-Kompiler von MS muss man er sogar wenn man nicht alles auf der konsole eintippen will. Auch QT unter Windows erzeugt sowas wie Makefiles.

    Makefiles verwendet man um jemanden ein Programm (Source) zu verfügung zu stellen ohne das dieser Wissen muss mit welcher IDE (falls überhaupt) es erstellt wurde.

    Fast jedes Linux-Programm wird aus dem Sourcen mit einem Makefile erstellt.
    Dadür gibt es dann das Script configure welche die Abhängigkeiten des aktuellen System prüft und eine Fehler auswirft wenn eine bestimmte Lib nicht vorzhanden ist oder eben dann ein Makefile erstellt. Kompiliert wird dann einfach mit
    make
    make install

    Makefile soll das kompilieren erleichtern.
    Hat ein Source 100te Dateien müsste man auch 100te kompielerzeilen schreiben um es zu erstellen.

    Siehe Kernelkompilieren bei Linux.
    Der Kernel wird einfach mit make erstellt und dann aus den X-Anzahl Sourcedateien eine Kerneldatei erstellt.

    quatsch is aber derb ausgedrückt

    um meinen code für http://www.uclinux.org/ hab ich extra makefiles
    um den code via cygwin für eine andere embedded linux distribution zu übersetzen hab ich wieder andere makefiles

    ums für den pc zu übersetzen hab ich vc wokspaces für windows und codewarrior workspaces für linux

    für texas instruments DSPs hab ich unterschiedliche code composer workspaces

    vielleicht wär die idee alles unter einem makefile zu vereinen... aber das is in der praxis viel zu aufwändig
    lieber leg ich einmal den code auf den cvs server und im unterordner für jede plattform die nötigen buildtools



  • Unix-Tom sagte ja nicht, dass es plattformübergreifend ist. Aber für ein System ist ein Makefile genereller, kann jeder benutzen und braucht halt nicht eine bestimmte IDE.

    Aber auch zum portieren auf andere Systeme ist ein Makefile praktischer. Einfach kopieren und ein paar Änderungen machen, statt sich durch die Einstellungen einer IDE klicken zu müssen.



  • DrGreenthumb schrieb:

    Unix-Tom sagte ja nicht, dass es plattformübergreifend ist. Aber für ein System ist ein Makefile genereller, kann jeder benutzen und braucht halt nicht eine bestimmte IDE.

    Aber auch zum portieren auf andere Systeme ist ein Makefile praktischer. Einfach kopieren und ein paar Änderungen machen, statt sich durch die Einstellungen einer IDE klicken zu müssen.

    er hat auf jeden fall gesagt, dass meine aussage quatsch is... dabei hat man auf plattformen die keine IDE haben "keine andere wahl" als ne makefile zu benutzen



  • Wir verwenden Makefiles um für embedded Systeme zu kiompilieren. 4 Zeilen mit dennen man einfach Kompiler, Linker, Kompiler- und Linkeroptionen festlegt und mehr muss noch geändert werden. Des ist praktischer als irgend nen IDE Projekt zu verwenden wenn man wirklich viele Kompiler hat.



  • Quatsch deshalb weil man Makefile nicht verwendet nur weil es kein IDE gibt.
    Es wird selten ein Programm mit der IDE kompiliert wo Makefile zum Einsatz kommen kann. Aber hast Recht. War etwas derbe. Sorry.
    Ich spreche jetzt nicht von KlickiBunti-WIN.
    Aber selbst VC++ erstellt so eine art Makefile.

    Will man übrigend verschiedene Plattformen dann kommt hier configue zu Einsatz welches im Grunde erst ein Makefile erzeugt.



  • Unix-Tom schrieb:

    Quatsch deshalb weil man Makefile nicht verwendet nur weil es kein IDE gibt.
    Es wird selten ein Programm mit der IDE kompiliert wo Makefile zum Einsatz kommen kann. Aber hast Recht. War etwas derbe. Sorry.
    Ich spreche jetzt nicht von KlickiBunti-WIN.
    Aber selbst VC++ erstellt so eine art Makefile.

    Will man übrigend verschiedene Plattformen dann kommt hier configue zu Einsatz welches im Grunde erst ein Makefile erzeugt.

    beziehst du dich da nur auf unterschiede zwischen unix/linux maschinen
    oder ist es auch üblich w32/unix/linux/dsp mit configure zu managen?


Anmelden zum Antworten