You are on page 1of 4

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального


образования

«ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Факультет автоматики и вычислительной техники

Кафедра ВТ

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


по дисциплине «Операционные системы»

Знакомство с техникой компиляции программ на языке программирования C(C++) в


среде ОС семейства UNIX

Выполнил:
студент гр. 8В53
Сидоров А. О.

Проверил:
доцент каф. ВТ
Шерстнев В.С.

Томск 2008
Цель работы
Ознакомиться с техникой компиляции программ на языке программирования C (C++) в среде ОС Unix,
а также получить практические навыки использования утилиты GNU MAKE для сборки проекта.

Ход работы
1. Ознакомился с теоретическим материалом
2. Создал простейшую программу на C++, состоящую из 2 файлов с исходным кодом (main.cpp и
secondary.cpp) и 1 заголовочного файла (secondary.h):
main.cpp:
#include <iostream>
#include "secondary.h"
using namespace std;

int main()
{
cout << sum(5, 6);
return 0;
}

secondary.cpp:
int sum(int i, int j)
{
return i + j;
}

secondary.h:
int sum(int i, int j);

3. Для автоматизации сборки проекта был создан простейший make-файл:


myProgram: main.o secondary.o
g++ main.o secondary.o -o myProgram

main.o: main.cpp
g++ -c main.cpp

secondary.o: secondary.cpp
g++ -c secondary.cpp

4. Программа была скомпилирована путем использования команды make:


5. Был изменен файл main.cpp, а затем произведена повторная компиляция:

Файл secondary.cpp не был перекомпилирован.

6. Был создан make-файл с высоким уровнем автоматизированной обработки исходных файлов


программы.
makefile:
sourceDir := src
binaryDir := bin
searchWildcardsList := $(addsuffix /*.cpp,$(sourceDir))

myProgram: $(notdir $(patsubst %.cpp,%.o,$(wildcard $(searchWildcardsList))))


g++ $^ -o $(binaryDir)/$@
rm *.o
rm *.d

VPATH := $(sourceDir)
%.o: %.cpp
g++ -c -MD $(addprefix -I ,$(sourceDir)) $<
include $(wildcard *.d)
Т. о. исходные файлы хранятся в папке src, исполняемый файл - в папке bin, а makefile – в корне.

Выводы
В ходе выполнения лабораторной работы я ознакомился с техникой компиляции программ на языке
программирования C++ в среде семейства Unix, а также получил практические навыки использования
утилиты GNU Make для сборки проекта.