Лабораторная работа №2
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
(МТУСИ)
Кафедра: Математической кибернетики и информационных технологий
Дисциплина: «Современные операционные системы»
Лабораторная работа № 2
«Знакомство со стандартной утилитой GNU Make
для построения проектов в OC Unix»
Выполнил: Иванов И.И.
Группа: МБСТ0000
Проверил:
Симонов С.Е.
__________________________
Москва, ****
Содержание
Y
Москва, **** 1
Цель 3
Задание 3
Выполнение заданий 4
1. Ознакомиться с теоретическим материалом. 4
2. Используя любой текстовый редактор, создать простейшую программу на языке C (C++) с использованием как минимум двух исходных файлов (с программным кодом). 4
3. Для автоматизации сборки проекта утилитой make создать make файл (см. п. «Пример создания более сложного make-файла»). 5
4. Выполнить программу (скомпилировать, при необходимости отладить). 6
5. Показать, что при изменении одного исходного файла и последующем вызове make будут исполнены только необходимые команды компиляции (неизмененные файлы перекомпилированы не будут) и изменены атрибуты и/или размер объектных файлов (файлы с расширением .o). 7
6. Создать make-файл с высоким уровнем автоматизированной обработки исходных файлов программы согласно следующим условиям: 7
Вывод 9
Цель
Ознакомиться с техникой компиляции программ на языке программирования C (C++) в среде ОС семейства Unix, а также получить практические навыки использования утилиты GNU make для сборки проекта.
Задание
Изучить особенности работы с утилитой make при создании проекта на языке С (С++) в ОС Unix, а также получить практические навыки использования утилиты GNU make при создании и сборке проекта.
Выполнение заданий
Ознакомиться с теоретическим материалом.
Используя любой текстовый редактор, создать простейшую программу на языке C (C++) с использованием как минимум двух исходных файлов (с программным кодом).
Рисунок 1
Файл main.c
Рисунок 2
Файл hello.c
Рисунок 3
3. Для автоматизации сборки проекта утилитой make создать make файл (см. п. «Пример создания более сложного make-файла»).
Рисунок 4
4. Выполнить программу (скомпилировать, при необходимости отладить).
Рисунок 5
Файлы в каталоге после запуска make:
Рисунок 6
Сделаем запрос ls –l, чтобы посмотреть время изменения файлов:
Рисунок 7
5. Показать, что при изменении одного исходного файла и последующем вызове make будут исполнены только необходимые команды компиляции (неизмененные файлы перекомпилированы не будут) и изменены атрибуты и/или размер объектных файлов (файлы с расширением .o).
Рисунок 8
Как видно из результата выполнения команды, изменялся только файл hello.o, т.к. в файл hello.c вносились изменения переменной. Остальные файлы (которые не менялись) не перекомпилировались.
6. Создать make-файл с высоким уровнем автоматизированной обработки исходных файлов программы согласно следующим условиям:
имя скомпилированной программы (выполняемый или бинарный файл), флаги компиляции и имена каталогов с исходными файлами и бинарными файлами (каталоги src, bin и т. п.) задаются с помощью переменных в makefile;
зависимости исходных файлов на языке C (С++) и цели в make файле должны формироваться динамически;
наличие цели clean, удаляющей временные файлы;
каталог проекта должен быть структурирован следующим образом:
- src – каталог с исходными файлами;
- bin – каталог с бинарными файлами (скомпилированными);
- makefile.
Рисунок 9
Make-файл был значительно автоматизирован и стал более универсален. Здесь использованы функция wildcard, которая получает список файлов с заданным шаблоном в выбранном каталоге, и функция patsubst, которая заменяет заданную подстроку в заданной строке. Эти функции позволяют автоматически построить список объектных файлов программы.
Еще в данном Make-файле автоматизирован поиск исходных файлов по нескольким директорием с использованием переменных search _wildcard s и VPATH.
Вывод
В ходе данной лабораторной работе была изучена утилита Make, которая позволяет собирать программу из множества разрозненных файлов. Данная утилита имеет большое количество возможностей по автоматизации сборки проекта и позволяет создать такой Make-файл, который подойдет ко многим программам и при сборке каждой из них потребует незначительное количество изменений.