разница между `make clean` и` make disclean`


25

Я установил ffmpeg из источников с помощью этой страницы. https://trac.ffmpeg.org/wiki/CentosCompilationGuide

Я заметил, что большая часть этого урока звонит make distcleanпосле make install. Но только libvpx звонки make cleanпосле установки.

Согласно этому документу, http://www.gnu.org/software/automake/manual/automake.html#Clean make clean удаляет все makeсозданные файлы и удаляет все созданные make distcleanфайлы ./configure.

очистить

Сотрите из дерева сборки файлы, собранные make all.

очищать

Дополнительно сотри что угодно ./configure создан.

Я понимаю, что make distcleanтребуется для следующей установки, но я не мог понять, почему make cleanвызывается после установки.

Установленный ffmpeg работает без проблем. Поэтому я задал этот вопрос, потому что я только хочу улучшить свои знания о Linux. Было бы очень полезно, чтобы кто-то объяснил мне это.


2
Make clean вызывается после установки для очистки. Нет необходимости хранить скомпилированные версии в каталоге, где вы скомпилировали, если у вас все еще есть и исходный код (и, следовательно, вы можете его воссоздать), и установленная программа.
Хеннес

Ответы:


27

Параметр, используемый после, makeзависит только от разработчика (разработчиков), который написал Makefile. Документация, на которую вы позже ссылаетесь, Autotools, является лишь одним из многих способов создания Makefile.

Типичный стандарт - make cleanудаляет все промежуточные файлы и make distcleanделает дерево таким, каким оно было, когда оно не было заархивировано (или что-то довольно близкое), включая удаление любого вывода скрипта configure. Так работает ядро ​​Linux.

Другими словами, она полностью зависит от разработчиков для каждой из этих библиотек, и поэтому иногда так cleanи бывает distclean. Между прочим, вам не нужно запускать clean/ distclean- я думаю, что они запускают его только для экономии места на диске. make installобычно копирует файлы в каталог назначения (опять же зависит от разработчиков) - как правило, такие места /usr/libили /usr/bin(также определяется скриптом configure, если это система сборки Autotools)

Эти нюансы являются основной причиной, по которой люди используют такие системы управления пакетами, как RPM или Debian.


Основная причина, по которой люди используют бинарные пакеты? Как насчет экономии времени?
x-yuri

6

Насколько я понимаю, это просто для безопасного дискового пространства. После компиляции некоторой программы у вас будет много файлов, например, объектных файлов, которые больше не нужны, потому что они связаны вместе в двоичных файлах. Все можно воссоздать, снова потратив некоторое время процессора.

Возьмите этот пример с текущим ffmpegкодом:

  • после клонирования gitрепо источник занимает 53 160 кБ
  • после запуска конфигурации это 53 632 кБ
  • после компиляции у нас более чем в 10 раз начальное значение: 673 668 кБ
  • make clean уменьшает это до 53 636 кБ
  • и, наконец, после make distcleanтого, как мы почти на уровне сразу после клонирования: 53 188 кБ

2

Почему шаг libvpx использует make cleanвместоmake distclean

На момент написания руководства у libvpx не было правила Makefileдля цели distclean, поэтому оно cleanиспользовалось вместо него.

Почему make (dist)cleanвключено послеmake install

make distclean/ make cleanвключается после каждого make installпросто в качестве меры предосторожности для предоставления «чистого листа» пользователям, которые возвращаются, изменяют параметры конфигурации и перекомпилируют (что происходило чаще, чем ожидалось).

В предыдущей версии руководства по компиляции без предупреждения make distcleanодин из этих пользователей иногда сталкивался с неожиданными результатами.

Что делать , если make distclean/ make cleanвыдает ошибку?

Так:

Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'.  Stop.

или это:

make: *** No rule to make target 'distclean'.  Stop.

Игнорируй это. Это просто означает, что вы, вероятно, make distcleanдважды пробежали, что безопасно.


Стоит отметить, что руководство теперь использует make distcleanдля libvpx.
Хашим
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.