- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: Was ist ein makefile (bin Anfänger)

  1. #1
    jojo.glaser
    Gast

    Was ist ein makefile (bin Anfänger)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi

    Ich wollte eine Übung zu AVRs machen und da sollte ich ein Programm auf meinen AVR laden dazu hab ich ein Quelltext bekommen und ein makefile.
    Den Quelltext hab ich in mein AVR- Studio kopiert.
    Was soll ich mit dem makefile machen? Für was brauch ich das?

    Vielen Dank für deine Hilfe!

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    18.08.2005
    Beiträge
    86
    Also, ich bin auch blutjunger Anfänger, aber soweit ich weiss stehen in dem Makefile der Prozessortyp, die verwendete Quarzfreuenz, ob eingebauter oder externer Quarz usw. .. also die initialisierung für den Compilerm damit dieser weiss, an welchen Stellen es was verschieben muss und welche Adressen zu welchen Labels passen.

    Aber bitte Antwort nur mit Vorsicht genießen...
    Wie gesagt, bin Anfänger!!!

    Ich würde dir empfehlen, AVR-Studio von ATMEL zu benutzen.
    Da ist eine AVR-GCC Oberfläche und Du musst dich um kein MAkefile kümern.
    Du wählst nur Deinen Kontrollertyp an und stellt das meiste bequem über Menüs ein.

    Grüße

    popi

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    11.02.2006
    Alter
    44
    Beiträge
    48
    Hallo,

    wenn Du Deinen Quelltext übersetzen kannst, dann kann Dir das Makefile egal sein.

    Aber um Deine Frage zu beantworten, hier ein "Kurztutorial" für Makefiles:

    In einem Makefile stehen grob gesagt drei verschiedene Sachen drin:
    1. Dateien, die erzeugt werden sollen (z.B. das hex-File)
    2. Dateien, die man dazu braucht (z.B. die Quelltextdatei)
    3. was zu tun ist, um aus den Quelldateien die Zieldateien zu erstellen

    Ein typischer Eintrag sieht also (vereinfacht) so aus:
    Code:
    meinprog.hex: meinprog.c
            GCC -irgendwelchegrausamenparameter -o meinprog.hex meinprog.c
    und liest sich so: Um die Datei meinprog.hex zu erzeugen, brauchst du meinprog.c. Um meinprog.hex aus meinprog.c zu erzeugen, musst Du das Kommando "gcc -irgendwel..." aufrufen

    Wenn Du jetzt in dem Verzeichnis, in dem das Makefile liegt, das Programm make
    startest, dann liest dieses das Makefile und versucht, die erste zu erzeugende Datei (im Beispiel meinprog.hex) zu erzeugen und wird den GCC mit den genannten Parametern aufrufen.

    Der Sinn des ganzen:
    1. Du kannst auch komplizierte Compile- und Ladevorgänge einmal sauber in das Makefile schreiben und musst Dir nicht die Compileraufrufe usw. auswendig merken.

    2. Im Makefile können Variablen benutzt werden (anlegen mit "Variable=Wert" in einer Zeile, verwenden mit $(Variable) ). In den Variablen kannst Du z.B. den Controllertyp einmal festlegen und dann immer wieder verwenden.

    3. Das Programm make erstellt eine Datei nur, wenn es sie noch nicht gibt oder eine der benötigten Dateien neuer ist als die Zieldatei. Wenn Du also das Beispiel von oben zweimal hintereinander ausführst, dann wird make erkennen, dass sich ja an meinprog.c gar nichts geändert hat und deshalb den Compiler nicht aufrufen. (wozu auch?)
    Machst Du dann eine Änderung in meinprog.c, dann wird make den Compiler wieder aufrufen.

    4. Wenn es eine benötigte Datei nicht gibt, dann versucht make sie anhand der Regeln im Makefile zu erstellen. Es sieht also nach, ob die benötigte Datei irgendwo als zu erstellende Datei im Makefile auftaucht.
    Auf diese Art kannst Du auch komplizierte Abhängigkeiten von make automatisch auflösen lassen.

    Lektüre: http://www.opussoftware.com/tutorial/TutMakefile.htm

    Grüße,

    Hans

    P.S.:
    Das Kommando (im Beispiel die Zeile, die mit GCC beginnt) muss mit einem Tabulator
    eingerückt werden. Leerzeichen funktionieren nicht!
    Eintragen und Roboternetz-User in der Nähe finden: http://www.frappr.com/roboternetz

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress