Розуміння команд Unix і Linux: make

Утиліта make автоматично визначає, які частини великої програми потрібно перекомпілювати, і видає команди для їх перекомпіляції. Посібник описує реалізацію make в GNU, яку написали Річард Столлман і Роланд МакГрат.

Утиліта make не обмежується програмами. Ви можете використовувати його для опису будь-якого завдання, де одні файли повинні автоматично оновлюватися з інших, коли інші змінюються. Команда make найчастіше використовується в загальному процесі для створення програмного забезпечення з вихідного коду.

людина за допомогою ноутбука
lina aidukaite/Moment/Getty Images

Як використовувати команду Make в Linux

Це типовий приклад того, як використовувати команду make в Linux. Зазвичай створення програм з відкритим кодом на основі їх вихідного коду є частиною простого трьохетапного процесу.

Ці приклади показують Програми C оскільки вони є найбільш поширеними, але ви можете використовувати make з будь-якою мовою програмування, яка може запускати свій компілятор за допомогою команди оболонки.

  1. Встановіть Git, якщо у вас його немає, разом із інструментами для створення програмного забезпечення.

    apt install git build-essential
  2. Виберіть програму для роботи або завантажте VLC.

    apt build-dep vlc
  3. Клонуйте вихідний код VLC.

    git клон https://github.com/videolan/vlc.git
  4. Змініть каталоги на клонований вихідний код VLC і запустіть скрипт конфігурації.

    CD vlc
    ./bootstrap
    ./налаштувати
  5. Запустіть зробити команда разом з -j прапорець, за яким слідує кількість ядер/потоків ЦП у вашій системі.

    зробити -j4
  6. Для цього знадобиться деякий час. Коли це буде зроблено, встановіть програму за допомогою зробити установку.

    sudo make install
  7. Ви закінчили.

Найчастіше так ви побачите, як використовується команда make. Можуть бути складніші процедури, ніж ця, або невеликі зміни, але вони ніколи не бувають занадто складними.

Як GNU змушує команду працювати?

У наведеному нижче розділі наведено технічну розбивку команди make. Якщо ви прагнете максимально використовувати make, перегляньте наведені нижче варіанти.

Ця сторінка є витягом з документації GNU make. Він оновлюється лише час від часу, оскільки проект GNU не використовує nroff. Щоб отримати повну поточну документацію, зверніться до інформаційного файлу make.info який створено з вихідного файлу Texinfo make.texinfo.

Синтаксис і підготовка утиліти make

Синтаксис утиліти make такий зробити -fmakefile ] [ варіант ]... ціль...

Щоб підготуватися до використання make, ви повинні написати файл під назвою makefile який описує відносини між файлами у вашій програмі та вказує команди для оновлення кожного файлу. Як правило, an виконуваний файл оновлюється з об’єктних файлів, які, у свою чергу, створюються шляхом компіляції вихідних файлів.

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

Утиліта make виконує команди в make-файлі, щоб оновити одне або кілька імен цілей, де ім'я зазвичай це програма. Якщо ні -f наявна опція, make шукає файли make GNUmakefile, makefile, і Makefile, в такому порядку.

Зазвичай ви також повинні викликати make-файл makefile або Makefile. (Рекомендується використовувати Makefile, оскільки він з'являється на видному місці біля початку списку каталогу, поблизу інших важливих файлів, таких як README.) Перше перевірене ім’я, GNUmakefile, не рекомендується для більшості make-файли. Використовуйте це ім’я, лише якщо make-файл є специфічним для GNU make і не буде зрозумілим іншими версіями make. Якщо makefile є -, стандартний вхід зчитується.

The зробити Утиліта оновлює ціль, якщо вона залежить від файлів передумов, які були змінені після останньої зміни цілі, або якщо ціль не існує.

Параметри для утиліти Make

The і параметри ігноруються для сумісності з іншими версіями make.

-C реж зміни до каталог реж перш ніж читати файли make-файлів або робити щось інше. Якщо кілька -C параметри вказані, кожен інтерпретується відносно попереднього: -C -С тощо є еквівалентним -C / тощо. Зазвичай це використовується з рекурсивним викликом make.

The -d параметр друкує інформацію про налагодження на додаток до звичайної обробки. Інформація про налагодження вказує, які файли розглядаються для перероблення, який час файлів порівнюється і з якими результатами, які файли потрібно переробити, і які неявні правила розглядаються, а які є застосовано.

The Параметр надає змінним, взятим із середовища, пріоритет над змінними з make-файлів.

The -f файлвикористання опції файл як make-файл.

The параметр ігнорує всі помилки в командах, що виконуються для перероблення файлів.

The -Я режпараметр визначає каталог реж для пошуку включених make-файлів. Якщо кілька -я параметри використовуються для визначення кількох каталогів, пошук у каталогах здійснюється в зазначеному порядку. На відміну від аргументів інших прапорів make, каталоги з  прапори можуть йти безпосередньо після прапора: -Ідір допускається, а також -Я режисер. Цей синтаксис дозволений для сумісності з препроцесором C  прапор.

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

The Опція продовжується якомога більше після помилки. Ціль, яка зазнала невдачі, і ті, що залежать від неї, неможливо переробити. Однак інші залежності цих цілей можна обробляти однаково.

The і -Я завантажую параметри вказують, що нові завдання (команди) не повинні запускатися, якщо виконуються інші завдання, а середнє навантаження становить принаймні навантаження (число з плаваючою комою). Без аргументів він видаляє попереднє обмеження навантаження.

The -n option друкує команди, які будуть виконані, але не виконує їх.

The -о файлопція не переробляє файл навіть якщо він старший за свої залежності і нічого не переробляє через зміни вфайл. По суті, файл розглядається як старий, а його правила ігноруються.

The -стр параметр друкує базу даних (правила та значення змінних), отриману в результаті читання make-файлів. Потім він виконується як зазвичай або інакше вказано. Це також друкує інформацію про версію, надану файлом -v перемикач (див. нижче). Щоб роздрукувати базу даних, не намагаючись переробити будь-які файли, використовуйте зробити-стр-f/dev/null.

The -q параметр встановлює режим запитання. Він не виконує жодних команд і нічого не друкує. Він повертає статус виходу, який дорівнює нулю, якщо вказані цілі оновлені, і відмінний від нуля в іншому випадку.

The -r параметр усуває використання вбудованих неявних правил. Він також очищає список суфіксів за замовчуванням для правил суфіксів.

The -s опція вимикає роботу. Він не друкує команди під час їх виконання.

The опція скасовує ефект  варіант. Це не потрібно, за винятком рекурсивного makewhere  може бути успадковано від make верхнього рівня через MAKEFLAGS або якщо ви встановите  у MAKEFLAGS у вашому середовищі.

The параметр торкається файлів (позначає їх оновленими, не змінюючи їх) замість виконання їхніх команд. Це використовується, щоб зробити вигляд, що команди виконано, щоб обдурити майбутні виклики make.

The -v параметр друкує версію програми make плюс авторські права, список авторів і повідомлення про відсутність гарантії.

The -w параметр друкує повідомлення, що містить робочий каталог до та після іншої обробки. Це може бути корисно для пошуку помилок із складних гнізд рекурсивних команд make.

The -В файл Опція робить вигляд, що метафайлбуло змінено. При використанні з -n прапорець, це показує, що станеться, якби ви змінили цей файл. Без -n, це майже те саме, що запустити a торкатися команду для даного файлу перед запуском make, за винятком того, що час модифікації змінюється лише в уяві make.