Отчет по лабораторной работе №2 «Основы использования утилиты построения проектов Make»
Федеральное агентство по образованию
Государственное образовательное
учреждение высшего профессионального образования
«Томский политехнический университет»
Факультет Автоматики и Вычислительной Техники
Кафедра Вычислительной Техники
ОПЕРАЦИОННЫЕ СИСТЕМЫ

Отчет по лабораторной работе №2
«Основы использования утилиты построения проектов Make»
Исполнитель студент группы 8В51 | __________ | Поданёв В.С. |
Согласовано доцент кафедры ВТ | __________ | Замятин А.В. |
Томск — 2008
Цель: ознакомиться с техникой компиляции программ на языке программирования C (C++) в среде ОС семейства Unix, а также получить практические навыки использования утилиты GNU Make для сборки проекта.
Задание: изучить особенности работы с утилитой Make при создании проекта на языке C (C++) в ОС Unix, а также получить практические навыки использования утилиты GNU Make при создании и сборке проекта.
Ход работы
На данном этапе мною было произведено ознакомление с теоретическими материалами предоставленными для ознакомления с процессами компиляции программ в среде ОС Unix c использованием утилиты Make. Материал был глубоко изучен и понят.
На втором шаге мною была написана простейшая программа с использованием двух исходных файлов: main.cpp и account.cpp
main.cpp
#include "account.cpp"
#include
int main(){
account acc;
acc.a=10;
acc.b=20;
printf("%f",acc.plus());
printf(" ");
return 0;
}
account.cpp
class account{
public:
double a;
double b;
double rez;
account(){}
account(double a,double b){
this->a=a;
this->b=b;
}
double plus(){
rez=a+b;
return rez;
}
double minus(){
rez=a-b;
return rez;
}
double mult(){
rez=a*b;
return rez;
}
double div(){
rez=a/b;
return rez;
}
};
На данном этапе для автоматизации сборки проекта утилитой Make создать простейший makefile:
eEdit:main.o account.o
g++ main.o account.o -o eEdit
main.o:main.cpp
g++ -c main.cpp
account.o:account.cpp
g++ -c account.cpp
clean:
rm *.o
На данном этапе мною была произведена компиляция программы. Моя программа удачно скомпилировалась, о чём говорят приведенные ниже логи:
g1u3@linux ~/lab1$ ls
account.cpp main.cpp makefile
g1u3@linux ~/lab1$ make
g++ -c main.cpp
g++ -c account.cpp
g++ main.o account.o -o eEdit
g1u3@linux ~/lab1$ ls
account.cpp account.o eEdit* main.cpp main.o makefile
g1u3@linux ~/lab1$ ./eEdit*
30.000000
g1u3@linux ~/lab1$ make clean
rm *.o
g1u3@linux ~/lab1$ ls
account.cpp eEdit* main.cpp makefile
Покажем, что при изменении одного исходного файла и последующем вызове Make будут исполнены только необходимые команды компиляции.
До изменения исходного файла account.cpp (рис.1):

Рис. 1. Содержимое каталогов
После изменения account.cpp (рис. 2):

Рис. 2. Содержимое каталогов
После выполнения Make файла, т.е. компиляции программы наблюдаем следующее (рис.3):

Рис. 3. Содержимое каталогов
На данном примере наглядно продемонстрировано, что при изменении одного из исходных файлов, в нашем случае account.cpp, при перекомпиляции программы с использование мейкфайла, изменяются только файлы, непосредственно зависящие от account.cpp, а именно account.o и eEdit*.
В данном задании мы создаём мейкфайл с высоким уровнем автоматизированной обработки исходной программы, а также используя файловое пространство состоящее из каталогов:
/src – каталог, содержащий исходные коды программ с расширением *.cpp
/bin – каталог, содержащий бинарные файлы
Мейкфайл в данном случае выглядит следующим образом:
override compile_flags := -pipe
source_dir:= src
binar_dir:= bin
search_wildcards:=$(addsuffix /*.cpp, $(source_dir))
eEdit:$(notdir $(patsubst %.cpp, %.o,$(wildcard $(search_wildcards))))
g++ $^ $(compile_flags) -o $(addprefix $(addsuffix /,$(binar_dir)),$@)
VPATH:=$(source_dir)
%.o: %.cpp
g++ -c $<
Полученный результат:
g1u3@linux ~/lab2$ make
g++ -c src/main.cpp
g++ account.o main.o -pipe -o bin/eEdit
g1u3@linux ~/lab2$ cd bin
g1u3@linux ~/lab2/bin$ ls
eEdit*
g1u3@linux ~/lab2/bin$ cd ../src
g1u3@linux ~/lab2/src$ ls
account.cpp main.cpp
g1u3@linux ~/lab2/src$
g1u3@linux ~/lab2/src$ cd ../bin
g1u3@linux ~/lab2/bin$ ./eEdit
30.000000
На данном листинге хорошо видно что созданный бинарный файл сохраняется в каталоге bin/ при его запуске убеждаемся в работоспособности программы.
Вывод
В ходе данной лабораторной работы были изучены методы построения программных проектов с использованием утилиты GNU Make. Были изучены возможности компиляции и построения с множественными параметрами различных программных продуктов.
страница 1
скачать
Другие похожие работы: