Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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
І відразу ж в нашому проекті з'являються і об'єктні файли і виконавчий. Програма make якраз і призначена для інтерпретації команд, що знаходяться у файлі зі стандартною назвою Makefile. Розглянемо його структуру.

Makefile є списком правил. Кожне правило починається з покажчика, що назмвається «Мета». Після нього стоїть двокрапка, а далі через пробіл зазначаються залежності. У нашому випадку ясно, що кінцевий файл kalkul залежить від об'єктних файлів calculate.o і main.o. Тому вони повинні бути зібрані раніше збірки kalkul. Після залежностей пишуться команди. Кожна команда повинна знаходитися в окремому рядку, і відокремлюватися від початку рядка клавішею Tab. Структура правила Makefile може бути дуже складною. Там можуть бути присутні змінні, конструкції розгалуження, циклу. Це питання потребує окремого детального вивчення.

Якщо ми подивимося на три перших правила, то вони нам добре зрозумілі. Там ті ж самі команди, якими ми вже користувалися. А що ж означають правила clean, install і uninstall?

У правилі clean стоїть команда rm, що видаляє виконуваний і об'єктні файли. Прапорець -f означає, що, якщо файл, що видаляється відсутній, програма повинна це проігнорувати, не видаючи ніяких повідомлень. Отже, правило clean призначене для «очищення» проекту, приведення його до такого стану, в якому він був до команди make.

Запустимо
make
З'явилися об'єктні файли і виконуваний. Тепер

make clean

Об'єктні і виконуваний файли зникли. Залишилися тільки c-файли, h-файл і сам Makefile. Тобто, проект «очистився» від результатів команди make.

Правило install поміщає виконуваний файл в каталог / usr / local / bin - стандартний каталог розміщення програм користувача. Це означає, що її можна буде викликати з будь-якого місця простим набором її імені. Але поміщати що-небудь в цей каталог можна тільки, зайшовши в систему під «суперкористувачем». Для цього треба дати команду su і набрати пароль «суперкористувача». В іншому випадку система вкаже, що вам відмовлено в доступі. Вихід з «суперкористувача» здійснюється командою exit. Отже,

make

su

make install

exit

Тепер ви можете запустити цю програму просто, ввівши ім'я програми, без прописування шляху.

kalkul
Можете відкрити каталог / usr / local / bin. Там повинен з'явитися файл з назвою kalkul. Давайте тепер «приберемо за собою, не будемо засмічувати систему.

su

make uninstall

exit

Подивіться каталог / usr / local / bin. Файл kalkul зник. Отже, правило uninstall видаляє програму з системного каталогу.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.