Inhaltsverzeichnis
1. Was ist Makefile? Makefile kann man sich einfach als die Kompilierungsregeln einer Projektdatei vorstellen, die die Kompilierungs- und Verknüpfungsregeln des gesamten Projekts beschreiben.
4 Grundregeln
7. Gewöhnliche Variablen
8. Häufig verwendete automatische Variablen:
Wildcard:

Was ist Makefile unter Linux?

Nov 26, 2021 pm 02:02 PM
linux makefile

Unter Linux ist Makefile die Kompilierungsregel einer Projektdatei, die die Kompilierungs- und Verknüpfungsregeln des gesamten Projekts beschreibt. Dazu gehört, welche Dateien kompiliert werden müssen, welche Dateien nicht kompiliert werden müssen und welche Dateien kompiliert werden müssen zuerst kompiliert werden und welche Dateien später kompiliert werden müssen Kompilierung, welche Dateien neu erstellt werden müssen usw.

Was ist Makefile unter Linux?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

1. Was ist Makefile? Makefile kann man sich einfach als die Kompilierungsregeln einer Projektdatei vorstellen, die die Kompilierungs- und Verknüpfungsregeln des gesamten Projekts beschreiben.

Ein Projekt auf Unternehmensebene verfügt normalerweise über viele Quelldateien, die manchmal nach Funktionen, Typen und Modulen in verschiedene Verzeichnisse unterteilt sind. Manchmal werden die Quellcodes mehrerer Programme in einem Verzeichnis gespeichert.

Makefle wurde geboren, um das Problem zu lösen, wie einige der oben genannten Codes kompiliert werden sollen. Es definiert eine Reihe von Regeln, die bestimmen, welche Dateien zuerst kompiliert werden sollen, welche Dateien später kompiliert werden sollen und welche Dateien neu kompiliert werden sollen.

Alles, was zum Kompilieren des gesamten Projekts gehört, kann im Makefile beschrieben werden. Mit anderen Worten: Makefile kann die Kompilierung unserer Projektprojekte automatisieren, ohne jedes Mal eine Reihe von Quelldateien und Parametern manuell eingeben zu müssen. Der Vorteil von

Makefile besteht darin, dass es eine „autonome Kompilierung“ erreichen kann. Das gesamte Projekt benötigt normalerweise nur einen

make

-Befehl, um die Kompilierung, Verknüpfung und noch komplexere Funktionen abzuschließen. Man kann sagen, dass jedes Linux-Quellprogramm mit einem Makefile geliefert wird. 2. Vorteile von Makefile

    Verwalten Sie die Kompilierung von Code, entscheiden Sie, welche Dateien kompiliert werden sollen, welche Kompilierungsreihenfolge erforderlich ist und ob eine Neukompilierung erforderlich ist.
  • Sparen Sie Kompilierungszeit. Wenn sich die Datei ändert, kompilieren Sie diese Datei einfach neu, ohne das gesamte Projekt neu zu kompilieren
  • Ein für alle Mal. Makefiles müssen in der Regel nur einmal geschrieben werden und müssen später nicht allzu viel geändert werden. 3. Benennungsregeln Makefile, da hierdurch zuerst das Makefile angezeigt wird.
  • Wenn Sie das Makefile mit einem anderen Namen benennen, z. B. Makefile_demo, ist dies ebenfalls zulässig, bei der Verwendung sollte jedoch die folgende Methode verwendet werden:

  • make -f Makefile_demo

4 Grundregeln

Die Grundregeln von Makefile sind: Ziel: Abhängigkeit

             -- > Ziele aus Abhängigkeitsdateien generieren Datei bedeutet

Tab -->

Jede Regel muss mit Tab beginnen

, Leerzeichen sind nicht erlaubt

Zum Beispiel schreiben wir oft gcc test.c -o test, mit Makefile ist es möglich geschrieben werden als:

test: test.c
    gcc test.c -o test

Unter diesen ist Test in der ersten Zeile das zu generierende Ziel, test.c ist die Abhängigkeit und die zweite Zeile ist die Regel zum Generieren von Test aus test.c.

Manchmal gibt es mehrere Ziele im Makefile, aber das Makefile legt das erste Ziel als ultimatives Ziel fest

.

5. Arbeitsprinzip

Generierung des Ziels:

a. Überprüfen Sie, ob die Abhängigkeitsdatei in der Regel vorhanden ist. b Abhängigkeitsdatei.

Im Bild oben lautet die Regel zum Generieren des Rechners beispielsweise gcc main.o add.o sub.o mul.o p.o -o. Makefil prüft zuerst main.o, add.o, sub. o, mul. Existiert o, p.o? Wenn nicht, wird nach Regeln gesucht, um die Abhängigkeitsdatei zu generieren.

Wenn beispielsweise die Abhängigkeit main.o fehlt, prüft das Makefile unten, ob es Regeln zum Generieren von main.o gibt. Wenn es feststellt, dass die Regel gcc main.c -o main.o main.o generieren kann, verwendet es diese Regel, um main.o zu generieren, und generiert dann den ultimativen Zielrechner. Der gesamte Prozess besteht darin, Abhängigkeiten nach unten zu finden und dann Befehle nach oben auszuführen, um das endgültige Ziel zu generieren.

Zielaktualisierung:

a. Wenn eine Abhängigkeit aktualisiert wird, generieren Sie das Ziel neu.

b.

Was ist Makefile unter Linux?Wenn beispielsweise main.c geändert wird, wird das Ziel main.o neu kompiliert. Wenn main.o aktualisiert wird, wird auch der ultimative Zielrechner neu kompiliert. Auch die Aktualisierung anderer Dateien erfolgt analog.

6. Befehlsausführung

make:

Verwenden Sie diesen Befehl, um Zieldateien nach vorgegebenen Regeln zu generieren. Wenn der Name des Makefiles nicht Makefile oder Makefile ist, sollten Sie die Option

-f

hinzufügen, wie zum Beispiel:

make -f Makefile_demo

Was ist Makefile unter Linux?make clean:

Löschen Sie die Zwischendateien (.o-Dateien) und endgültigen Zieldateien, die während des Kompilierungsprozesses generiert wurden.

Wenn im aktuellen Verzeichnis eine Datei mit dem Namen „clean“ vorhanden ist, wird dieser Befehl nicht ausgeführt.

​ -->Lösung: Pseudo-Zielanweisung: .PHONY:clean

Spezielle Symbole:

-: Zeigt an, dass auch dann, wenn während der Ausführung dieses Befehls ein Fehler auftritt, nachfolgende Befehle weiterhin ausgeführt werden hingerichtet. Beispiel:

-rm a.o build/

@: gibt an, dass der Befehl nur ohne Echo ausgeführt wird. Wenn eine allgemeine Regel ausgeführt wird, wird die ausgeführte Regel auf dem Terminal gedruckt. Nach dem Hinzufügen dieses Symbols wird nur der Befehl ausgeführt und die ausgeführte Regel wird nicht wiederholt. Zum Beispiel:

@echo $(SOURCE)

7. Gewöhnliche Variablen

Variablendefinition und -zuweisung:

Variablen können direkt durch Zuweisen von Werten definiert werden, wie zum Beispiel:

INCLUDE = ./include/

Variablenwert:

Setzen Sie ihn in Klammern und fügen Sie ein Dollarzeichen hinzu, z. B.:

FOO = $(OBJ)

In das System integrierte Variablen:

Normalerweise alle Großbuchstaben, z. B. CC, PWD, CFLAG usw.

Einige haben Standardwerte, andere nicht. Zum Beispiel die häufigsten:

CPPFLAGS: vom Präprozessor benötigte Optionen wie: -I

CFLAGS: während der Kompilierung verwendete Parameter –Wall –g -c

LDFLAGS: von der Linkbibliothek verwendete Optionen –L -l

Der Standardwert von Variablen kann geändert werden. Der Standardwert von CC ist beispielsweise cc, er kann jedoch in gcc geändert werden: CC=gcc

8. Häufig verwendete automatische Variablen:

Makefile bietet viele automatische Variablen, aber die folgenden drei werden häufig verwendet. Diese automatischen Variablen können nur in Befehlen in Regeln verwendet werden und können nicht anderswo verwendet werden.

$@ --> Das Ziel in der Regel

$$^ --> app: main.c func1.c fun2.c

 gcc $^ - o $@

Unter ihnen: $^ repräsentiert main.c func1.c fun2.c, $

Musterregeln:

Musterregeln bestehen darin, % in den Ziel- und Abhängigkeitsbedingungen zu verwenden, um die entsprechenden Dateien abzugleichen. Im Verzeichnis befinden sich beispielsweise drei Dateien: main.c, func1.c und func2.c. Für diese drei Die Kompilierung der Datei kann durch eine Regel abgeschlossen werden:

%.o:%.c

$(CC) –c $

Diese Musterregel bedeutet:

main. o wird von main.c generiert,

  func1.o wird von func1.c generiert,

  func2.o wird von func2.c generiert

Dies ist die Rolle von Musterregeln, die alle Dateien im Verzeichnis unter abgleichen können einmal.

9. Funktionen

makefile bietet uns auch eine große Anzahl von Funktionen. Die folgenden zwei Funktionen werden ebenfalls häufig verwendet. Es ist zu beachten, dass alle Funktionen im

Makefile einen Rückgabewert

haben müssen. Nehmen wir im folgenden Beispiel an, dass sich im Verzeichnis drei Dateien main.c, func1.c und func2.c befinden.

Wildcard:

wird verwendet, um Dateien eines bestimmten Typs in einem bestimmten Verzeichnis zu finden. Die folgenden Parameter sind beispielsweise Verzeichnis + Dateityp:

src = $(wildcard ./src/*.c)

Bedeutet: Finden Sie alle Dateien mit dem Suffix .c im Verzeichnis ./src und weisen Sie sie der Variablen src zu.

Nach Abschluss der Befehlsausführung lautet der Wert von src: main.c func1.c fun2.c.

patsubst:

Eine passende Ersetzung, wie im folgenden Beispiel, wird verwendet, um alle Dateien mit der Endung .c im src-Verzeichnis zu finden, sie durch .o-Dateien zu ersetzen und sie obj zuzuweisen.

obj = $(patsubst %.c ,%.o ,$(src))

Ersetzen Sie alle Dateien mit dem Suffix .c in der src-Variablen durch .o.

Nachdem der Befehl ausgeführt wurde, lautet der Wert von obj main.o func1.o func2.o

Besonders wenn Sie alle .o-Dateien im obj-Verzeichnis ablegen möchten, können Sie die folgende Methode verwenden:

ob = $(patsubst . /src/%.c, ./obj/%.o, $(src))

Verwandte Empfehlungen: „

Linux Video Tutorial

Das obige ist der detaillierte Inhalt vonWas ist Makefile unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1594
276
Wie mache ich PHP -Container -Unterstützung automatisch? Kontinuierlich integrierte CI -Konfigurationsmethode der PHP -Umgebung Wie mache ich PHP -Container -Unterstützung automatisch? Kontinuierlich integrierte CI -Konfigurationsmethode der PHP -Umgebung Jul 25, 2025 pm 08:54 PM

Um PHP -Container zur Unterstützung der automatischen Konstruktion zu ermöglichen, liegt der Kern in der Konfiguration des Continuous Integration (CI) -Prozesses. 1. Verwenden Sie Dockerfile, um die PHP -Umgebung zu definieren, einschließlich grundlegender Bild-, Erweiterungsinstallations-, Abhängigkeitsmanagement- und Berechtigungseinstellungen. 2. Konfigurieren Sie CI/CD-Tools wie GitLabci und definieren Sie die Erstell-, Test- und Bereitstellungsstadien über die Datei .gitlab-ci.yml, um automatische Konstruktion, Test und Bereitstellung zu erreichen. 3.. Integrieren Sie Testframeworks wie Phpunit, um sicherzustellen, dass die Tests automatisch nach Codeänderungen ausgeführt werden. 4. Verwenden Sie automatisierte Bereitstellungsstrategien wie Kubernetes, um die Bereitstellungskonfiguration durch die Datei bereitzustellen. 5. Dockerfile optimieren und mehrstufige Konstruktionen übernehmen

So erstellen Sie eine unabhängige Umgebung von PHP -Task Container. So konfigurieren Sie den Container zum Ausführen von PHP -Timed -Skripten So erstellen Sie eine unabhängige Umgebung von PHP -Task Container. So konfigurieren Sie den Container zum Ausführen von PHP -Timed -Skripten Jul 25, 2025 pm 07:27 PM

Der Aufbau einer unabhängigen Umgebung für PHP -Aufgabencontainer kann über Docker implementiert werden. Die spezifischen Schritte sind wie folgt: 1. Installieren Sie Docker und DockerComponpose als Grundlage; 2. Erstellen Sie ein unabhängiges Verzeichnis, um Dockerfile und Crontab -Dateien zu speichern. 3. Schreiben Sie Dockerfile, um die PHPCLI -Umgebung zu definieren und Cron und die erforderlichen Erweiterungen zu installieren. 4. Schreiben Sie eine Crontab -Datei, um Zeitaufgaben zu definieren. 5. Schreiben Sie ein Docker-compose.yml-Mount-Skriptverzeichnis und konfigurieren Sie Umgebungsvariablen. 6. Starten Sie den Container und überprüfen Sie das Protokoll. Im Vergleich zu Timing -Aufgaben in Webcontainern haben unabhängige Container die Vorteile der Ressourcenisolation, der reinen Umgebung, der starken Stabilität und einer einfachen Expansion. Gewährleistung der Protokollierung und Fehleraufnahme

Linux vs Windows: Welches Betriebssystem ist besser für Sie? Linux vs Windows: Welches Betriebssystem ist besser für Sie? Jul 29, 2025 am 03:40 AM

WindowsSbetterForBeginersDuetoeaseofuse, SeamlessHardWarecompatibilität und SupportformainStreamSoftwarelikemicrosoftOfficAndAbApps.2.LinuxoutPerformswindowSonolderorlow-Resourcehardwarewithfasterboottimes, LowersyStemRequeStemeStemRequirements und LowsSystems und LesslosedleSble

Wie man eine Festplatte unter Linux sicher löscht Wie man eine Festplatte unter Linux sicher löscht Jul 24, 2025 am 12:08 AM

Bestätigen Sie den Namen der Zielfestplatte (z. B. /dev /sda), um das Versand, die Systemscheibe versehentlich zu löschen. 2. Verwenden Sie sudoddif =/dev/zeroof =/dev/sdxbs = 1mstatus = Fortschritt, um den Nullwert in der vollständigen Festplatte zu überschreiben, was für die meisten Szenarien geeignet ist. 3. Verwenden Sie Sudoshred-V-N3/Dev/SDX für drei zufällige Datenüberschreibungen, um sicherzustellen, dass sie nicht wiederhergestellt werden können. V. Verwenden Sie schließlich sudohexdump-c/dev/sdx |

So planen Sie Aufgaben unter Linux mit Cron und Anacron So planen Sie Aufgaben unter Linux mit Cron und Anacron Aug 01, 2025 am 06:11 AM

cronisusedForprecisesDulingonalways-Einsysteme, whileanaconeSureSureStoctasKsRunonSystemthataren'tcontinuouslyPowered, Suchaslaptops; 1.USecronforexacttiming (z

Wie installiere ich Software unter Linux mit dem Terminal? Wie installiere ich Software unter Linux mit dem Terminal? Aug 02, 2025 pm 12:58 PM

Es gibt drei Hauptmethoden, um Software unter Linux zu installieren: 1. Verwenden Sie einen Paketmanager wie APT, DNF oder Pacman und führen dann den Installationsbefehl aus, nachdem die Quelle aktualisiert wurde, wie z. B. sudoaptininstallcurl; 2. Verwenden Sie für .deb- oder .rpm -Dateien DPKG- oder RPM -Befehle, um Abhängigkeiten bei Bedarf zu installieren und zu reparieren. 3.. Verwenden Sie Snap oder Flatpak, um Anwendungen über Plattformen hinweg zu installieren, z. Es wird empfohlen, den eigenen Paketmanager des Systems für eine bessere Kompatibilität und Leistung zu verwenden.

Die ultimative Anleitung für Hochleistungsspiele unter Linux Die ultimative Anleitung für Hochleistungsspiele unter Linux Aug 03, 2025 am 05:51 AM

CHOOSEPOP! _OS, Ubuntu, Nobaralinux, OrarchlinuxforoptimalgamingPerformancewithminimaloverhead.2.installofficialnvidiaproprietaryDreversFornvidiagpus, sicherstellen, dass die Datemesa-Kernelversionen-Lattel-Latzen-Latzen-LATTETEPUSTEPUSTEPUSTEPUSCOWEPERSCHUWS

Was tun nach der Installation von Linux Was tun nach der Installation von Linux Jul 23, 2025 am 02:57 AM

Nach dem InstallingLinux, der ersten Stiel -CLUDUPDATEYOURSYSTEM, Installation von WegeStieftware, SetingUpbackupandSecurityMeasures und Customizing theInterfacetosuityourPreferences.1) UpdateyourSystemusedtheAppropriceCandforyourdistro (E.G., Sudoaptupdate & Am

See all articles