Unterschied zwischen `make clean` und `make distclean`
Ich habe ffmpeg aus Quellen mit Hilfe dieser Seite installiert. https://trac.ffmpeg.org/wiki/CentosCompilationGuide
Mir ist aufgefallen, dass die meisten dieses Tutorials make distclean
nach make install
aufrufen.
Aber nur libvpx ruft make clean
nach der Installation auf.
Nach diesem Dokument,
http://www.gnu.org/software/automake/manual/automake.html#Clean
make clean
löscht alle Dateien, die make
erstellt haben, und make distclean
löscht alle Dateien, die ./configure
erstellt haben.
Machen clean
Löschen Sie die von make all erstellten Dateien aus dem Build-Baum.
Make distclean
Zusätzlich alles löschen ./configure erstellt.
Ich verstehe, dass make distclean
für die nächste Installation aufgerufen wird,
aber ich konnte nicht verstehen, warum make clean
nach der Installation aufgerufen wird.
Das installierte ffmpeg funktioniert problemlos. Also habe ich diese Frage gestellt, weil ich nur mein Wissen über Linux verbessern möchte. Es wäre sehr hilfreich, dass jemand gib mir eine Erklärung dafür.
3 answers
Der nach make
verwendete Parameter hängt nur von dem / den Entwickler ab, der / die Makefile
geschrieben hat. Die Dokumentation, auf die Sie später verweisen, Autotools, ist nur eine von vielen Möglichkeiten, ein Makefile
zu erstellen.
Der typische Standard ist, dass make clean
alle Zwischendateien entfernt und make distclean
den Baum so macht, wie er war, als er nicht geteert wurde (oder etwas ziemlich Nahes), einschließlich des Entfernens von configure Script Ausgabe. So funktioniert zum Beispiel der Linux-Kernel.
Mit anderen Worten, es ist völlig abhängig von den Entwicklern für jede dieser Bibliotheken, und deshalb ist es manchmal clean
und manchmal distclean
. Übrigens müssen Sie nicht rennen clean
/distclean
- Ich denke, sie müssen es nur ausführen, um Speicherplatz zu sparen. make install
kopiert normalerweise die Dateien in das Zielverzeichnis ( wiederum abhängig von den Entwicklern) - normalerweise Orte wie /usr/lib
oder /usr/bin
(auch bestimmt durch das Configure-Skript, wenn es sich um ein Autotools-Build-System handelt)
Diese Nuancen sind der Hauptgrund menschen verwenden Paketverwaltungssysteme wie RPM oder Debian-Pakete.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-27 20:31:30
Nach meinem Verständnis ist es einfach, Speicherplatz zu sichern. Nach dem Kompilieren eines Programms haben Sie viele Dateien, z. B. Objektdateien, die nicht mehr benötigt werden, da sie in den Binärdateien miteinander verknüpft sind. Alle können neu erstellt werden, indem Sie wieder etwas CPU-Zeit verbringen.
Nehmen Sie dieses Beispiel mit dem aktuellen ffmpeg
Code:
- nach dem Klonen des Repos
git
nimmt die Quelle 53 160 kB - nach dem Configure-Lauf sind es 53 632 kB
- nach der Kompilierung haben wir mehr als 10 mal des Anfangswertes: 673 668 kB
-
make clean
reduziert dies auf 53 636 kB - und schließlich nach
make distclean
sind wir gleich nach dem Klonen fast auf dem Niveau: 53 188 kB
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-08-28 19:09:28
Warum der libvpx-Schritt make clean
anstelle von make distclean
Zum Zeitpunkt des Schreibens des Leitfadens hatte libvpx keine Regel in seinem Makefile
für das Ziel distclean
, daher wurde stattdessen clean
verwendet.
Warum make (dist)clean
nach make install
make distclean
/make clean
ist nach jedem make install
einfach als Vorsichtsmaßnahme enthalten, um Benutzern, die zurückkehren, Konfigurationsoptionen ändern und neu kompilieren (was häufiger als erwartet aufgetreten ist), einen "sauberen Überblick" zu geben.
In einer früheren Version des kompilieren-Anleitung, ohne die Vorbeugungs - make distclean
, einer dieser Benutzer würde gelegentlich zu unerwarteten Ergebnissen.
Was ist, wenn make distclean
/make clean
gibt einen Fehler?
So:
Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'. Stop.
Oder dies:
make: *** No rule to make target 'distclean'. Stop.
Ignoriere es. Es bedeutet nur, dass Sie wahrscheinlich make distclean
zweimal ausgeführt haben, was harmlos ist.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-10-11 17:47:31