22

Я установил 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 deltes всех файлы , которые ./configure созданы.

очистить

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

очищать

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

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

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

3 ответа3

25

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

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

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

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

6

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

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

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

Почему шаг 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 что безопасно

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .