Вы находитесь на странице: 1из 12

Федеральное агентство связи

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение


высшего образования

«Московский технический университет связи и информатики»

Кафедра «Математической кибернетики и информационных технологий»

Отчет по лабораторной работе

по дисциплине «Низкоуровневое программирование»

на тему:

«Основы работы с утилитой make»

Выполнил:
Студент группы БВТ1801
Тимофеев И.И.
Проверил:
Фатхулин Т.Д.

Москва 2021
Цель работы: Изучить и практически освоить основы работы с
утилитой make, разработать несколько кросспалтформенных программных
продуктов.
Задание
 Соберите программу, разработанную в лабораторной работе №3, при
помощи одной команды gcc.
 Используя утилиту make повторите сборку программы.
 Очистите проект от результатов работы команды make при помощи
цели, созданной в файле Makefile.
 Сделайте разработанную программу доступной по вызову из терминала
по ее имени при помощи цели, созданной в файле Makefile.
 Удалите разработанную программу при помощи цели, созданной в
файле Makefile.
 Создайте кроссплатформенный вариант программной реализации.

Краткая теория
Часто при разработке ПО возникает вопрос: можно ли не
компилировать файлы по отдельности, а собрать сразу всю программу одной
командой? Можно.
gcc calculate.c main.c -o kalkul –lm
Вы скажете, что это удобно? Удобно для нашей программы, потому
что она состоит всего из двух c-файлов. Однако профессиональная
программа может состоять из нескольких десятков таких файлов. Каждый раз
набирать названия их всех в одной строке было быделом чрезмерно
утомительным. Но есть возможность решить эту проблему. Названия всех
исходных файлов и все команды для сборки программы можно поместить в
отдельный текстовый файл. А потом считывать их оттуда одной короткой
командой.
Утилита make как раз и предназначена для интерпретации команд,
находящихся в файле со стандартным названием Makefile. Рассмотрим его
структуру.
Makefile является списком правил. Каждое правило начинается с
указателя, называемого «Цель». После него стоит двоеточие, а далее через
пробел указываются зависимости. В нашем случае ясно, что конечный файл
kalkul зависит от объектных файлов calculate.o и main.o. Поэтому они
должны быть собраны прежде сборки kalkul. После зависимостей пишутся
команды. Каждая команда должна находиться на отдельной строке, и
отделяться от начала строки клавишей «Tab». Структура правила Makefile
может быть очень сложной. Там могут присутствовать переменные,
конструкции ветвления, циклы.
Выполнение
Для оптимизации процесса компиляции создадим файл Makefile, в
котором укажем необходимые команды

Рисунок 1 – Создание файла

Рисунок 2 – Содержание файла


Запустим файл прописав команду «make –f <имя файлa>»

Рисунок 3 – Компиляция программы

Далее попробуем выполнить пару вычислений, чтобы проверить


работоспособность

Рисунок 4 – Проверка работоспособности


Далее очистим директорию, через команду «make –f <имя файлф>
clean»

Рисунок 5 – Очистка директории

Добавим нашу программу в каталог «\bin», перейдя для этого в режим


супер пользователя

Рисунок 6 – Добавление программы в каталог \bin


Проверим произошло ли добавление и попробуем запустить нашу
программу

Рисунок 7 – Проверка работоспособности

Удалим нашу программу из каталога «/bin»

Рисунок 8 – удаление из каталога/bin

Попробуем запустить этот файл в OC Windows

Рисунок 9 – Измененное содержание файла


Рисунок 10 – Запуск приложения
Вывод
Я получил навыки работы с утилитой make и разработал
кроссплатформенную программу, использую компилятор gcc.
Контрольные вопросы

1.Поясните назначение утилиты make. В каких случаях ее


использование предпочтительно?
Утилита make автоматически определяет части большой программы
должны быть перекомпилированы, и выполняет необходимые для этого
действия.
Исходя из первой части ответа, можно сделать вывод, что данную
утилиту предпочтительнее использовать при большом объеме
компилируемых файлов
2. Какую структуру имеет Makefile? Что такое цель и
зависимости?
Makefile имеет следующую структуру:
цель ... : зависимости ...
команда
...
...
Цель – это имя файла, который генерируется во время работы
утилиты, либо некое действие, которое должно быть выполнено
Зависимость – это файлы, которые используются как исходные, при
порождении цели
3.Как необходимо начинать строку с командами?
Строка с командами начинается с табуляции
4.Как организуются правила Makefile с использованием
переменных, конструкций ветвления и циклов?
Переменная представляет собой имя, определенное в make-файле для
представления строки текста, называемой значением переменной. И может
подставляться в нужные места make-файла. Переменная может представлять
собой что угодно, например, список файлов, набор передаваемых
компилятору опций, имя запускаемой программы, список каталогов с
исходными файлами, директорию для выходных файлов. Для обращения к
данным переменной используется символ «$»
Конструкция ветвления заставит make обрабатывать\игнорировать
часть make-файла, в зависимости от значения некоторых переменных. В
качестве условия может использоваться сравнение двух переменных или
сравнение переменной с константной строкой. Условные конструкции
управляют тем, как будет обрабатываться make-файл.
Условные конструкции имеют следующий вид:
условная-директива
фрагмент-для-выполненного-условия
else
фрагмент-для-невыполненного-условия
endif
Циклы имеют следующий вид записи:
$(foreach var,$(NUMBERS),<действие>;)
Где в действии указывается выполняемые действия/правила

5.Поясните назначения правила clean, которое было использовано


в работе.
Правило «clean» предназначено для «очистки» проекта, приведения
его к такому состоянию, в каком он был до команды make.
6.Поясните назначения правила install, которое было
использовано в работе.
Правило «install» помещает исполняемый файл в каталог /bin для того,
чтобы ее можно было вызывать из любого места простым набором имени.
7.Поясните назначения правила uninstall, которое было
использовано в работе.
Правило uninstall удаляет программу из системного каталога

Вам также может понравиться