Make-файли, розробка програмного забезпечення для linux
Make-файли
Make-файли
У вас, ймовірно, виникло питання: чи можна не компілювати ці файли окремо, а зібрати відразу всю програму однією командою? Можна, можливо.
gcc calculate.c main.c -o kalkul -lm
Ви скажете, що це зручно? Зручно для нашої програми, тому що вона складається всього з двох c-файлів. Однак професійна програма може складатися з декількох десятків таких файлів. Кожен раз набирати назви їх усіх в одному рядку було б справою надмірно виснажливим. Але є можливість вирішити цю проблему. Назви всіх вихідних файлів і всі команди для складання програми можна помістити в окремий текстовий файл. А потім зчитувати їх звідти однією короткою командою.
Давайте створимо такий текстовий файл і скористаємося нею. В каталозі проекту kalkul2 видаліть всі файли, крім calculate.h, calculate.c, main.c. Потім створіть в цьому ж каталозі новий файл, назвіть його Makefile (без розширень). Помістіть туди наступний текст.
Зверніть увагу на рядки, введені з відступом від лівого краю. Цей відступ отриманий за допомогою клавіші Tab. Тільки так його і треба робити! Якщо будете використовувати клавішу «Пробіл», команди не будуть виконуватися.
Потім дамо команду, що складається всього з одного слова:
І відразу ж в нашому проекті з'являються і об'єктні файли і запускається. Програма make якраз і призначена для інтерпретації команд, які перебувають у файлі зі стандартним назвою Makefile. Розглянемо його структуру.
Makefile є списком правил. Кожне правило починається з покажчика, званого «Мета». Після нього варто двокрапка, а далі через пробіл зазначаються залежності. У нашому випадку ясно, що кінцевий файл kalkul залежить від об'єктних файлів calculate.o і main.o. Тому вони повинні бути зібрані перш збірки kalkul. Після залежностей пишуться команди. Кожна команда повинна знаходитися на окремому рядку, і відокремлюватися від початку рядка клавішею Tab. Структура правила Makefile може бути дуже складною. Там можуть бути присутніми змінні, конструкції розгалуження, циклу. Це питання потребує окремого детального вивчення.
Якщо ми подивимося на три перших правила, то вони нам добре зрозумілі. Там ті ж самі команди, якими ми вже користувалися. А що ж означають правила clean, install і uninstall?
У правилі clean варто команда rm, що видаляє виконуваний і об'єктні файли. Прапор -f означає, що, якщо видаляється файл відсутній, програма повинна це проігнорувати, не виказуючи жодних повідомлень. Отже, правило clean призначене для «очищення» проекту, приведення його до такого стану, в якому він був до команди make.
З'явилися об'єктні файли і виконуваний. тепер
Об'єктні і виконуваний файли зникли. Залишилися тільки c-файли, h-файл і сам Makefile. Тобто, проект «очистився» від результатів команди make.
Правило install поміщає виконуваний файл в каталог / usr / local / bin - стандартний каталог розміщення призначених для користувача програм. Це означає, що її можна буде викликати з будь-якого місця простим набором її імені. Але поміщати щось в цей каталог можна тільки, зайшовши в систему під «суперкористувачем». Для цього треба дати команду su і набрати пароль «суперкористувача». В іншому випадку система вкаже, що вам відмовлено в доступі. Вихід з «суперкористувача» здійснюється командою exit. Отже,
Тепер ви можете запустити це програму просто, ввівши ім'я програми, без прописування шляху.
Можете відкрити каталог / usr / local / bin. Там має з'явитися файл з назвою kalkul.
Давайте тепер «приберемо за собою", не будемо засмічувати систему.
Подивіться каталог / usr / local / bin. Файл kalkul зник. Отже, правило uninstall видаляє програму з системного каталогу.