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


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.