Question différence entre `make clean` et` make distclean`


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 ces appels de tutoriel make distclean après make install. Mais seuls les appels libvpx make clean après l'installation

Selon ce document, http://www.gnu.org/software/automake/manual/automake.html#Clean make clean supprime tous les fichiers make créé, et make distclean supprime tous les fichiers ./configure créé.

faire le ménage

Effacer de l’arbre de construction les fichiers créés par make all.

rendre distclean

De plus effacer tout ./configure créé.

je comprends que make distclean est appelé pour la prochaine installation, mais je ne pouvais pas comprendre 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 voulais seulement améliorer mes connaissances sur Linux. Il serait très utile que quelqu'un me donne une explication à ce sujet.


21
2017-08-28 18:31


origine


Make clean est appelé après l'installation pour nettoyer. Il n'est pas nécessaire de conserver les versions compilées dans le répertoire où vous avez compilé si vous avez toujours à la fois la source (et donc pouvez les recréer) et le programme installé. - Hennes


Réponses:


Le paramètre utilisé après make dépend uniquement du ou des développeurs qui ont écrit le Makefile. La documentation que vous utiliserez plus tard, Autotools, est l’une des nombreuses façons de créer un Makefile.

La norme typique est make clean va supprimer tous les fichiers intermédiaires, et make distclean rend l’arbre tel qu’il était quand il n’était pas goudronné (ou quelque chose d’assez 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. Au fait, vous n'avez pas besoin de courir clean/distclean - Je suppose qu'ils vous ont demandé de simplement économiser de l'espace disque. make install copie généralement les fichiers dans le répertoire de destination (encore une fois en fonction des développeurs) - généralement des endroits comme /usr/lib ou /usr/bin (également déterminé 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 utilisateurs utilisent des systèmes de gestion de paquets tels que les paquets RPM ou Debian.


24
2017-08-28 19:12





À ma connaissance, il s'agit simplement de sécuriser l'espace disque. Après avoir compilé un programme, vous aurez beaucoup de fichiers, par exemple les fichiers objets qui ne sont plus nécessaires, car ils sont liés entre eux dans les binaires. Tout peut être recréé en dépensant à nouveau du temps CPU.

Prenons cet exemple avec le courant ffmpeg code:

  • après avoir cloné le git repo, la source prend 53 160 Ko
  • après la configuration, il est de 53 632 Ko
  • après compilation nous avons plus de 10 fois la valeur initiale: 673 668 kB
  • make clean réduit cela à 53 636 kB
  • et enfin après make distclean nous sommes presque au niveau juste après le clonage: 53 188 Ko

5
2017-08-28 19:09





Pourquoi l'étape libvpx utilise make clean au lieu de make distclean

Au moment de la rédaction du guide, libvpx n'avait aucune règle dans son Makefile pour la cible distclean, alors clean a été utilisé à la place.

Pourquoi make (dist)clean est inclus après make install

make distclean/make cleanest inclus après chaque make install simplement comme une mesure de précaution pour fournir une «liste blanche» aux utilisateurs qui reviennent, 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 la prévention make distcleanun de ces utilisateurs pourrait parfois rencontrer des résultats inattendus.

Et qu'est-ce qui se passerait si 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.

L'ignore Cela signifie simplement que vous avez probablement couru make distclean deux fois ce qui est inoffensif.


1
2017-10-11 17:03