[Linux] Automatisierte Build-Tools – detaillierte Erklärung von make/Makefile

1175ee7859cc48aea62cd5d09ac60a8a.png

 Vorwort

  • Hallo zusammen, willkommen zur YY Drop Linux-Reihe, herzlich willkommen!
  • Der Hauptinhalt dieses Kapitels richtet sich an Veteranen, die mit Linux in Berührung gekommen sind. Der Hauptinhalt umfasst

Willkommen zum Abonnieren der YY Drop Linux-Kolumne! Weitere Trockenwaren werden laufend aktualisiert! Das Folgende ist das Portal! 

Abonnieren Sie die Kolumne mit der Lektüre: YYs „Linux“-Reihe❀❀❀❀❀
【Linux Series-P1】Aufbau einer Linux-Umgebung
[Linux Series-P2] Grundkenntnisse und Anleitungen zu Linux
【Linux Series-P3】Linux-Berechtigungen
[Linux-Serie-P4] Linux-Basistools [yum] [vim]

Inhaltsverzeichnis

1. Einführung in den Make/Makefile-Hintergrund

2. Abhängigkeiten und abhängige Methoden

3. Makefile-Funktion: Automatische Ableitung von Abhängigkeiten

4. Funktion erstellen: Bestimmen Sie anhand der Neuheit der Quelldatei und der Zieldatei, ob die Abhängigkeit für die Kompilierung erneut ausgeführt werden soll

5. 【.PHONY】und die Anwendung falscher Ziele

Einleitung: Und was müssen wir dafür sorgen, dass make jedes Mal ausgeführt wird?

Herkömmliche Anwendung: [.PHONY] ändert clean, sodass die abhängige Methode, die clean entspricht, jedes Mal ausgeführt wird

6. Spezielle Symbole [$@] [$^] kennzeichnen Dateien


1. Einführung in den Make/Makefile-Hintergrund

  • Ob Sie ein Makefile schreiben können, zeigt einerseits, ob eine Person in der Lage ist, Großprojekte abzuschließen
  • Die Quelldateien in einem Projekt werden nicht gezählt und nach Typ, Funktion und Modul in mehreren Verzeichnissen abgelegt. Makefile definiert eine Reihe von Regeln, um anzugeben, welche Dateien zuerst kompiliert werden müssen, welche Dateien später kompiliert werden müssen, welche Dateien neu kompiliert werden müssen und sogar komplexere Funktionsvorgänge auszuführen
  • Der Vorteil von Makefile ist die „automatische Kompilierung“. Nach dem Schreiben ist nur ein Make-Befehl erforderlich, und das gesamte Projekt wird vollständig automatisch kompiliert, was die Effizienz der Softwareentwicklung erheblich verbessert.
  • make ist ein Befehlstool, das die Anweisungen in der Makefile erklärt. Im Allgemeinen verfügen die meisten IDEs über diesen Befehl, z. B.: make in Delphi, nmake in Visual C++, make in GNU unter Linux. Es ist ersichtlich, dass Makefiles zu einer Kompilierungsmethode im Engineering geworden sind.
  • make ist ein Befehl , makefile ist eine Datei und beide werden zusammen verwendet, um die automatische Erstellung des Projekts abzuschließen.
  • make durchsucht das Makefile von oben nach unten und verwendet den ersten Befehl als Standardbefehl (z. B. setze clean: am Anfang und die Operation von make ist clean). Unter normalen Umständen stellen wir also das auszuführende Programm an den Anfang , setzen clean unten und rufen [make clean] auf, wenn wir clean verwenden möchten.
  • Der Make-Befehl wird standardmäßig vom System ausgeführt (wie in der folgenden Abbildung zu sehen ist, befindet sich make im bin-Verzeichnis).

  •  make findet die entsprechende [Abhängigkeitsbeziehung] und [Abhängigkeitsmethode] im aktuellen Verzeichnis; was ist eine Abhängigkeitsmethode? Weitere Informationen finden Sie weiter unten

2. Abhängigkeiten und abhängige Methoden

Einführung: Um Ihnen ein besseres Verständnis von Abhängigkeiten und abhängigen Methoden zu vermitteln, stellt YY Ihnen unten einen Anwendungsfall vor

  1. Wir erstellen zunächst ein Makefile mit vim und schreiben die Abhängigkeiten [mycode:mycode.c] und die abhängigen Methoden [gcc -o mycode mycode.c] wie in der Abbildung gezeigt im [Einfügemodus] ;
  2. Zu beachtende Besonderheiten: [clean:] Auf der rechten Seite steht nichts, was bedeutet, dass clean nicht von irgendwelchen Dateien abhängt ; ebenso hängt in [1] mycode von mycode.c ab;
  3. Lassen Sie uns vim verwenden, um eine mycode.c-Datei zu schreiben 
  4. Wenn wir zur Linux-Schnittstelle zurückkehren und make und make clean eingeben, können wir die Abhängigkeitsmethode deutlich erkennen.
  • [PS: make ist die erste Operation im Makefile, die standardmäßig aufgerufen wird, und make clean wird im Makefile von oben nach unten durchsucht]


3. Makefile-Funktion: Automatische Ableitung von Abhängigkeiten

  • Die Schlussfolgerung lässt sich aus den folgenden Anwendungsfällen ablesen: make leitet automatisch die Abhängigkeiten im Makefile ab (es ist der rekursiven Struktur sehr ähnlich , da die Rekursion den Aufruf des Funktionsstapelrahmens beinhaltet, können wir auch verstehen, dass es sich um eine Stapelstruktur handelt ).
  • Eine Änderung der Reihenfolge hat keine Auswirkungen;
  • Wenn in der Mitte eine Reihe von Abhängigkeiten fehlt (z. B. mycode.s: mycode.i auskommentieren), funktioniert es nicht.


4. Funktion erstellen: Bestimmen Sie anhand der Neuheit der Quelldatei und der Zieldatei, ob die Abhängigkeit für die Kompilierung erneut ausgeführt werden soll

Einführung: Wenn wir den Befehl make zum zweiten Mal verwenden, wird die folgende Situation angezeigt: Dies ist der Compiler, um wiederholte Kompilierungen zu verhindern und die Effizienz zu verbessern; und wie geht das?

abschließend:

  • Der Befehl „make“ bestimmt anhand der Neuheit der Quelldatei und der Zieldatei, ob es erforderlich ist, die Abhängigkeiten für die Kompilierung erneut auszuführen
  • Bei jedem Vorgang muss vor einem ausführbaren Programm (.exe) eine Quelldatei (.c) vorhanden sein.
  • Im Allgemeinen muss das ausführbare Programm aktueller sein als die Quelldatei
  • Wenn wir die Quelldatei ändern, ist die Quelldatei zu diesem Zeitpunkt neuer als das ausführbare Programm . Dies kann durch Ausführen von make zu diesem Zeitpunkt realisiert werden. Andernfalls wird die Rückmeldung „Ist auf dem neuesten Stand“ angezeigt

5. 【.PHONY】und die Anwendung falscher Ziele

Einleitung: Und was brauchen wir, damit make jedes Mal ausgeführt wird ?

  • Verwenden Sie [.PHONY] , um Mycode so zu ändern, dass er zu einem falschen Ziel wird
  • Das Merkmal falscher Ziele ist, dass sie immer ausgeführt werden ;

Herkömmliche Anwendung: [.PHONY] ändert clean, sodass die abhängige Methode, die clean entspricht, jedes Mal ausgeführt wird


6. Spezielle Symbole [$@] [$^] kennzeichnen Dateien

  • Verwenden Sie [$@], um die Zieldatei darzustellen, und [$^], um die Datei auf der rechten Seite des Doppelpunkts darzustellen

Acho que você gosta

Origin blog.csdn.net/YYDsis/article/details/131515237
Recomendado
Clasificación