Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






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 видаляє програму з системного каталогу.





Переглядів: 367

<== попередня сторінка | наступна сторінка ==>
Приклад проекту з декількох файлів | Системні виклики

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.006 сек.