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

Министерство науки и высшего образования Российской Федерации

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


высшего образования
«Балтийский государственный технический университет «ВОЕНМЕХ» им. Д.Ф. Устинова»
(БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова»)
БГТУ.СМК-Ф-4.2-К5-01

Факультет О Естественнонаучный
шифр Наименование
Информационные системы и программная
Кафедра О7 инженерия
шифр Наименование
Дисциплина Компьютерный практикум

Лабораторная работа № 4
на тему:
Особенности работы с программой для управления компиляцией
Вариант 7

Выполнил студент группы О715Б


Векслер А.Ю.
Фамилия И.О.

ПРЕПОДАВАТЕЛЬ
Садырова А. К.
Фамилия И.О. Подпись

Оценка
«_____» 2022 г.

Санкт-Петербург
2022 г.
Постановка задачи
Написать makefile для всех программ, написанных в предыдущих
лабораторных работах с возможностью выбора требуемой в зависимости от
введенной цели. Учесть, что файлы с исходным текстом программы будут
лежать в подкаталогах, в которые также должны быть помещены полученные
объектные и исполняемые файлы.
Задание
Содержимое MakeFile-а
.PHONY : none
none:
all: lab1 lab2 lab3 lab1_1_clean lab1_2_clean lab1_3_clean lab2_1_clean
lab2_2_clean lab2_3_clean lab3_clean
first: lab1_1 lab1_2 lab1_3 lab1_1_clean lab1_2_clean lab1_3_clean
second: lab2_1 lab2_2 lab2_3 lab2_1_clean lab2_2_clean lab2_3_clean
third: lab3_1 lab3_clean

lab1: lab1_1 lab1_2 lab1_3


lab1_1:
gcc -o C:\compprac\1\main.exe C:\compprac\1\main.c
lab1_1_clean:
del C:\compprac\1\*.exe
lab1_2:
gcc -o C:\compprac\2.2\main2.exe C:\compprac\2.2\main.c C:\compprac\2.2\
EntrerArray.c C:\compprac\2.2\Scan.c
lab1_2_clean:
del C:\compprac\2.2\*.exe
lab1_3:
gcc -o C:\compprac\3\main1.exe C:\compprac\3\main.c C:\compprac\3\
EntrerArray.c C:\compprac\3\Worl.c
lab1_3_clean:
del C:\compprac\3\*.exe
lab2: lab2_1 lab2_2 lab2_3
lab2_1:
gcc -g C:\compprac\2lab\Fib\main.c -o C:\compprac\2lab\Fib\main.exe
lab2_1_clean:
del C:\compprac\2lab\Fib\*.exe
lab2_2:
gcc -g C:\compprac\2lab\Sentences\Sen\main.c -o C:\compprac\2lab\Sentences\Sen\
main.exe
lab2_2_clean:
del C:\compprac\2lab\Sentences\Sen\*.exe
lab2_3:
gcc -c C:\compprac\2lab\3rd\main.c
gcc -c -o C:\compprac\2lab\3rd\main.o C:\compprac\2lab\3rd\main.c
gcc -c C:\compprac\2lab\3rd\EnModStr.c
gcc -c -o C:\compprac\2lab\3rd\EnModStr.o C:\compprac\2lab\3rd\EnModStr.c
ar -r C:\compprac\2lab\3rd\libString.a C:\compprac\2lab\3rd\main.o C:\compprac\
2lab\3rd\EnModStr.o
gcc -g C:\compprac\2lab\3rd\main.c C:\compprac\2lab\3rd\libString.a -o C:\
compprac\2lab\3rd\main.exe
lab2_3_clean:
del C:\compprac\2lab\3rd\*.exe
del C:\compprac\2lab\3rd\*.a
del C:\compprac\2lab\3rd\*.o
lab3: lab3_1
lab3_1:
gcc -c -fPIC C:\compprac\3lab\main.c C:\compprac\3lab\Array.c C:\compprac\3lab\
Matrix.c
gcc -c -o C:\compprac\3lab\Array.o C:\compprac\3lab\Array.c
gcc -c -o C:\compprac\3lab\Matrix.o C:\compprac\3lab\Matrix.c
gcc -shared -o C:\compprac\3lab\libArray.dll C:\compprac\3lab\Array.o
gcc -shared -o C:\compprac\3lab\libMatrix.dll C:\compprac\3lab\Matrix.o
gcc -c -o C:\compprac\3lab\main.o C:\compprac\3lab\main.c
gcc -o C:\compprac\3lab\main.exe C:\compprac\3lab\main.o
lab3_clean:
del C:\compprac\3lab\*.exe
del C:\compprac\3lab\*.dll
del C:\compprac\3lab\*.o

Cкрипт состоит из набора правил, которые в свою очередь описываются:


1) целями (то, что данное правило делает);
2) реквизитами (то, что необходимо для выполнения правила и получения
целей);
3) командами (выполняющими данные преобразования).
all — является стандартной целью по умолчанию. При вызове make ее
можно явно не указывать.
clean — очищает каталог от всех файлов полученных в результате
компиляции.
Для выполнения задания также, помимо all были добавлены цели: first,
second и third, означающие выполнение первой, второй и третьей
лабораторной работы, соответственно. При их запуске сперва создаются, а
затем удаляются созданные файлы.
Алгоритм работы заключается в последовательном создании
необходимых для работы файлов, библиотек, а затем, чтобы не заполнять
память файлами, их удалением. В коде прописаны команды для выполнения
всех трех лабораторных в нумерологической последовательности
На рисунке 1 показаны команды, считанные с «makefile» для
компиляции файлов и создания исполняемых файлов, которые лежат в
подкаталогах. На рисунке 2, 3, 4 показаны команды, необходимые для
компиляции и создания исполняемых файлов для конкретной лабораторной
работы на выбор пользователя

Рисунок 1 – Команды «makefile»

Рисунок 2 – Выполнение только первой практической


Рисунок 3 – Выполнение только второй практической

Рисунок 3 – Выполнение только 3 практической

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