Was genau ist ein Makefile und wie können wir eines erstellen?

8

Ich weiß, dass dies eine dumme Frage ist, aber da ich mich so sehr bemühe, Linux selbst zu lernen, brauche ich Hilfe von euch.

Ich habe diese Aufgabe im Internet gefunden und versuche sie zu lösen, aber ich verstehe nicht genau, wie ich Makefiles unter Linux verwenden und wie ich sie erstellen kann.

Nehmen wir an, mein Druckarbeitsverzeichnis ist /home/george/Documents

Ich möchte ein Makefile erstellen, das Folgendes ausführt:

  1. Zeigt eine Meldung wie folgt an: "Hallo Arbeit, heute ist Sonne". Die Sonne kommt vom Sonntag. Daher muss ich den dateBefehl in dieser make-Datei verwenden, um nur die ersten drei Buchstaben anzuzeigen.
  2. Komprimieren /etc/hostsbei der /tmpVerwendung gzip(wahrscheinlich sollte hier so etwas wie sein

    gzip -c SOURCE DESTINATION # ?? 
    

Prost

Adrian George
quelle
Makefiles dienen dazu, in einer Softwareentwicklungsaktivität selektiv veraltete Objektdateien aus Quelldateien zu erstellen. Es hat nichts mit dem zu tun, was Sie tun würden.
Enzotib

Antworten:

8

Um Ihre Frage zu beantworten, kann ich Ihnen keine einzeilige Antwort geben, da sie sich mit allem befasst. Lesen Sie den ersten Link , der alles enthält, was Sie brauchen, auch mit Beispielen.

Gutes Tutorial, das alles über make erklären kann

rɑːdʒɑ
quelle
3
Der erste Link sollte sein: mrbook.org/blog/tutorials/make
Shahryar Saljoughi
Das Tutorial mrbook.org/blog/tutorials/make verwendet veralteten C ++ - Code und wird nicht mehr kompiliert. Sehen Sie sich diese Frage an, um sie zu verstehen und zu beheben.
David
Links sind tot.
ComputerScientist
2

Ein Makefile wird als "Map" für die Kompilierung von C-Programmen verwendet. Sie arbeiten mit dem makeDienstprogramm und beschreiben, wie ein Programm kompiliert / verknüpft werden muss, um ordnungsgemäß zu funktionieren, sobald es in eine ausführbare Datei umgewandelt wurde. Für globale UNIX / Shell-Aufgaben suchen Sie nach Shell-Skripten, nicht nach Makefiles :)

Siehe http://en.wikipedia.org/wiki/Make_(software)#Makefiles für weitere Informationen über Makefiles und http://en.wikipedia.org/wiki/Shell_script Shell - Skripten zu entdecken.

Ein grundlegendes Shell-Skript für das, was Sie versuchen, könnte sein:

#!/bin/bash
echo "Hello world, today is $(date +%a)"
gzip -c SOURCE DESTINATION

Bewahren Sie diese in einer Datei, und führen Sie es mit Ihrem Shell - Prompt ( bash myscript.sh, sh myscript.sh, ...). Sie können das Skript auch ausführbar machen, indem Sie:

chmod +x myscript.sh

Führen Sie es dann mit Ihrem Standardinterpreter aus mit:

./myscript.sh
John WH Smith
quelle
1
Ich versuche ein Makefile zu erstellen, das kein Shell-Skript ausführt.
Adrian George
Dann müssen Sie ein C-Programm entwickeln, das dies tut, und es mit einem Makefile kompilieren, wenn Sie möchten. Makefiles führen keine Linux-Aufgaben aus, sie leiten die Kompilierung von C-Programmen, es ist eine ganz andere Sache.
John WH Smith
1
@JohnWHSmith Das Kompilieren von C-Programmen ist nichts Besonderes. Makefiles können verwendet werden, um eine Vielzahl von Aufgaben auszuführen. (
Eliah Kagan
0

Warum nicht ein Shell-Skript erstellen und dann einen symbolischen Link erstellen, der auf das von Ihnen erstellte Shell-Skript verweist? Platzieren Sie den symbolischen Link in einem Verzeichnis, das sich im PFAD befindet, damit Sie den symbolischen Link unabhängig von dem Verzeichnis, in dem Sie sich befinden, ausführen können.

user544202
quelle