Ich habe ffmpeg aus Quellen mit Hilfe dieser Seite installiert. https://trac.ffmpeg.org/wiki/CentosCompilationGuide
Ich bemerkte , dass die meisten von diesen Tutorial Anrufen make distclean
nach make install
. Aber nur libvpx ruft make clean
nach der Installation auf.
Gemäß diesem Dokument
löscht http://www.gnu.org/software/automake/manual/automake.html#Clean
make clean
alle erstellten Dateien make
und make distclean
löscht alle erstellten Dateien ./configure
.
sauber machen
Löschen Sie aus dem Build-Baum die von make all erstellten Dateien.
distclean machen
Löschen Sie zusätzlich alle erstellten ./configure.
Ich verstehe, dass dies make distclean
für die nächste Installation erforderlich ist, konnte jedoch nicht nachvollziehen, warum make clean
nach der Installation aufgerufen wird.
Das installierte ffmpeg funktioniert problemlos. Deshalb habe ich diese Frage gestellt, weil ich nur mein Wissen über Linux verbessern möchte. Es wäre sehr hilfreich, wenn mir jemand eine Erklärung dafür geben würde.
Antworten:
Der Parameter, der danach verwendet wird,
make
hängt nur von den Entwicklern ab, die das geschrieben habenMakefile
. Die Dokumentation, auf die Sie später verweisen, Autotools, ist nur eine von vielen Möglichkeiten zum Erstellen einesMakefile
.Der typische Standard ist
make clean
, alle Zwischendateien zu entfernen undmake distclean
den Baum so zu machen, wie er war, als er nicht geteert war (oder etwas ziemlich Nahes). So funktioniert beispielsweise 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 manchmaldistclean
. Übrigens müssen Sie nichtclean
/distclean
- ich denke, Sie haben es nur ausgeführt, 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
(wird auch vom configure-Skript bestimmt, wenn es sich um ein Autotools-Build-System handelt)Diese Nuancen sind der Hauptgrund, warum Leute Paketverwaltungssysteme wie RPM- oder Debian-Pakete verwenden.
quelle
Nach meinem Verständnis ist es einfach um Speicherplatz zu sparen. 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. Alles kann durch erneutes Aufwenden von CPU-Zeit neu erstellt werden.
Nehmen Sie dieses Beispiel mit dem aktuellen
ffmpeg
Code:git
Repos benötigt die Quelle 53.160 kBmake clean
reduziert dies auf 53.636 kBmake distclean
wir fast auf dem Niveau direkt nach dem Klonen: 53.188 kBquelle
Warum der libvpx-Schritt
make clean
anstelle von verwendetmake distclean
Zum Zeitpunkt des Schreibens hatte der Leitfaden libvpx keine Regel
Makefile
für das Zieldistclean
undclean
wurde stattdessen verwendet.Warum
make (dist)clean
ist nach enthaltenmake install
make distclean
/make clean
wird nacheinandermake install
nur als Vorsichtsmaßnahme eingefügt, um Benutzern, die zurückkehren, Konfigurationsoptionen ändern und neu kompilieren (was häufiger vorkam als erwartet), eine "saubere Sache" zu bieten.In einer früheren Version des Kompilierungshandbuchs stieß
make distclean
einer dieser Benutzer gelegentlich ohne Vorbeugung auf unerwartete Ergebnisse.Was ist, wenn
make distclean
/make clean
gibt einen Fehler?So was:
oder dieses:
Ignoriere es. Es bedeutet nur, dass Sie wahrscheinlich
make distclean
zweimal gelaufen sind, was harmlos ist.quelle
make distclean
für libvpx verwendet.