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