різниця між "очистити" та "зробити непомітним"


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
Очистити називається після установки, щоб очистити. Немає необхідності зберігати компільовані версії в каталозі, куди ви зібрали, якщо у вас все ще є джерело (і таким чином ви можете відтворити ці) та встановлена ​​програма.
— Hennes

Відповіді:


27

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

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

Іншими словами, це повністю залежить від розробників для кожної з цих бібліотек, і саме тому іноді так cleanі в інші рази distclean. До речі, вам не потрібно запускати clean/ distclean- Я думаю, у вас це запускається просто для економії місця на диску. make installзазвичай копіює файли в каталог призначення (знову залежно від розробників) - зазвичай це місця на зразок /usr/libабо /usr/bin(також визначається сценарієм налаштування, якщо це система побудови 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.