Z pomocą tej strony zainstalowałem ffmpeg ze źródeł. https://trac.ffmpeg.org/wiki/CentosCompilationGuide
Zauważyłem, że większość tych samouczków wywołuje make distclean
później make install
. Ale tylko wywołania libvpx make clean
po instalacji.
Zgodnie z tym dokumentem
http://www.gnu.org/software/automake/manual/automake.html#Clean
make clean
usuwa wszystkie make
utworzone pliki i make distclean
usuwa wszystkie ./configure
utworzone pliki .
oczyścić
Usuń z drzewa kompilacji pliki zbudowane przez make all.
uczynić dystylnym
Dodatkowo usuń wszystko, co zostało utworzone ./configure.
Rozumiem, że make distclean
wymaga to kolejnej instalacji, ale nie mogłem zrozumieć, dlaczego make clean
jest wywoływany po instalacji.
Zainstalowany ffmpeg działa bez problemu. Zadałem więc to pytanie, ponieważ chcę tylko poprawić swoją wiedzę na temat systemu Linux. Byłoby bardzo pomocne, gdyby ktoś mi to wyjaśnił.
Odpowiedzi:
Parametr użyty po
make
zależy tylko od programistów, którzy napisaliMakefile
. Dokumentacja, do której później się odwołujesz, Autotools, to tylko jeden z wielu sposobów na stworzenieMakefile
.Typowym standardem jest
make clean
usuwanie wszystkich plików pośrednich imake distclean
sprawia, że drzewo jest tak, jak było wtedy, gdy nie było tarowane (lub coś bardzo blisko), w tym usuwanie wszelkich danych wyjściowych skryptu konfiguracyjnego. Tak działa na przykład jądro Linuksa.Innymi słowy, jest całkowicie zależny od programistów dla każdej z tych bibliotek, i dlatego czasami tak jest,
clean
a innym razemdistclean
. Nawiasem mówiąc, nie trzeba uruchamiaćclean
/distclean
- Wydaje mi się, że uruchomili go tylko w celu zaoszczędzenia miejsca na dysku.make install
zwykle kopiuje pliki do katalogu docelowego (ponownie zależne od programistów) - zwykle miejsca takie jak/usr/lib
lub/usr/bin
(również określone przez skrypt konfiguracyjny, jeśli jest to system kompilacji Autotools)Te niuanse są głównym powodem, dla którego ludzie używają systemów zarządzania pakietami, takich jak pakiety RPM lub Debian.
źródło
W moim rozumieniu jest to po prostu bezpieczne miejsce na dysku. Po skompilowaniu jakiegoś programu będziesz mieć wiele plików, np. Plików obiektowych, które nie są już potrzebne, ponieważ są one połączone razem w plikach binarnych. Wszystkie można odtworzyć, ponownie poświęcając trochę czasu procesora.
Weź ten przykład z bieżącym
ffmpeg
kodem:git
repozytorium źródło pobiera 53 160 kBmake clean
zmniejsza to do 53 636 kBmake distclean
jesteśmy prawie na poziomie tuż po klonowaniu: 53 188 kBźródło
Dlaczego krok libvpx używa
make clean
zamiastmake distclean
W momencie pisania przewodnika libvpx nie miał żadnej reguły
Makefile
dotyczącej celudistclean
, więcclean
został użyty.Dlaczego
make (dist)clean
jest uwzględniony pomake install
make distclean
/make clean
jest dołączany pomake install
prostu jako środek ostrożności, aby zapewnić „czyste konto” dla użytkowników, którzy wracają, zmieniają opcje konfiguracji i ponownie kompilują (co występowało częściej niż oczekiwano).W poprzedniej wersji przewodnika kompilacji, bez profilaktyki
make distclean
, jeden z tych użytkowników czasami napotkał nieoczekiwane wyniki.Co jeśli
make distclean
/make clean
daje błąd?Lubię to:
albo to:
Zignoruj to. Oznacza to po prostu, że prawdopodobnie
make distclean
dwukrotnie pobiegłeś, co jest nieszkodliwe.źródło
make distclean
dla libvpx.