J'ai installé ffmpeg à partir de sources avec l'aide de cette page. https://trac.ffmpeg.org/wiki/CentosCompilationGuide
J'ai remarqué que la plupart de ce didacticiel appelle make distclean
après make install
. Mais seul libvpx appelle make clean
après l’installation.
Selon ce document, http://www.gnu.org/software/automake/manual/automake.html#Cleanmake clean
supprime tous les fichiers créés par make
, et make distclean
supprime tous les fichiers que ./configure
a créés.
rendre propre
Efface de l’arbre de compilation les fichiers créés par make all.
faire distclean
En outre, effacez tout ce que vous avez créé ./configure.
Je comprends que make distclean
est appelé pour la prochaine installation, mais je ne comprends pas pourquoi make clean
est appelé après l’installation.
Le ffmpeg installé fonctionne sans problème. J'ai donc posé cette question parce que je veux seulement améliorer mes connaissances sur Linux. Il serait très utile que quelqu'un me donne une explication à ce sujet.
Le paramètre utilisé après make
dépend uniquement du ou des développeurs qui ont écrit Makefile
. La documentation à laquelle vous faites référence par la suite, Autotools, n’est qu’un des nombreux moyens de créer une Makefile
.
La norme typique, make clean
, supprime tous les fichiers intermédiaires, et make distclean
rend l’arborescence telle qu’elle était lorsqu’elle était non tarée (ou quelque chose de très proche), y compris la suppression de toute sortie de script de configuration. C’est ainsi que fonctionne le noyau Linux.
En d'autres termes, cela dépend totalement des développeurs pour chacune de ces bibliothèques, et c'est pourquoi parfois sa clean
et d'autres fois c'est distclean
. En passant, vous n'avez pas besoin d'exécuter clean
/distclean
- je suppose qu'ils vous l'ont exécuté simplement pour économiser de l'espace disque. make install
copie généralement les fichiers dans le répertoire de destination (là encore, cela dépend des développeurs) - des emplacements tels que /usr/lib
ou /usr/bin
(également déterminés par le script configure, s'il s'agit d'un système de génération Autotools)
Ces nuances sont la principale raison pour laquelle les gens utilisent des systèmes de gestion de paquets comme les paquets RPM ou Debian.
À ma connaissance, il s’agit simplement d’espace disque sécurisé. Après avoir compilé un programme, vous aurez beaucoup de fichiers, par exemple les fichiers objet qui ne sont plus nécessaires, car ils sont liés entre eux dans les fichiers binaires. Tous peuvent être recréés en passant à nouveau du temps CPU.
Prenons cet exemple avec le code ffmpeg
actuel:
git
, la source prend 53 160 Komake clean
réduit cela à 53 636 komake distclean
nous sommes presque au niveau juste après le clonage: 53 188 kBmake clean
au lieu de make distclean
Au moment de la rédaction du guide, libvpx n'avait pas de règle dans sa Makefile
pour la cible distclean
, donc clean
a été utilisé à la place.
make (dist)clean
est inclus après make install
make distclean
/make clean
est inclus après chaque make install
simplement par mesure de précaution afin de fournir une "table rase" aux utilisateurs qui reviennent en arrière, modifient les options de configuration et recompilent (ce qui s’est produit plus souvent que prévu).
Dans une version précédente du guide de compilation, sans le make distclean
préventif, l'un de ces utilisateurs rencontrait parfois des résultats inattendus.
make distclean
/make clean
donne une erreur?Comme ça:
Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'. Stop.
ou ca:
make: *** No rule to make target 'distclean'. Stop.
Ignore le. Cela signifie simplement que vous avez probablement exécuté make distclean
deux fois, ce qui est inoffensif.