NetNado
  Найти на сайте:

Учащимся

Учителям



Отчет по лабораторной работе №2 «Основы использования утилиты построения проектов Make»



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

Государственное образовательное

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

«Томский политехнический университет»

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

Кафедра Вычислительной Техники

ОПЕРАЦИОННЫЕ СИСТЕМЫ

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

«Основы использования утилиты построения проектов Make»


Исполнитель

студент группы 8В51

__________

Поданёв В.С.

Согласовано

доцент кафедры ВТ

__________

Замятин А.В.


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

Задание: изучить особенности работы с утилитой Make при создании проекта на языке C (C++) в ОС Unix, а также получить практические навыки использования утилиты GNU Make при создании и сборке проекта.
Ход работы

  1. На данном этапе мною было произведено ознакомление с теоретическими материалами предоставленными для ознакомления с процессами компиляции программ в среде ОС 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;

}

};

  1. На данном этапе для автоматизации сборки проекта утилитой 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

  1. На данном этапе мною была произведена компиляция программы. Моя программа удачно скомпилировалась, о чём говорят приведенные ниже логи:

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


  1. Покажем, что при изменении одного исходного файла и последующем вызове Make будут исполнены только необходимые команды компиляции.

До изменения исходного файла account.cpp (рис.1):



Рис. 1. Содержимое каталогов

После изменения account.cpp (рис. 2):


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



Рис. 3. Содержимое каталогов

На данном примере наглядно продемонстрировано, что при изменении одного из исходных файлов, в нашем случае account.cpp, при перекомпиляции программы с использование мейкфайла, изменяются только файлы, непосредственно зависящие от account.cpp, а именно account.o и eEdit*.

  1. В данном задании мы создаём мейкфайл с высоким уровнем автоматизированной обработки исходной программы, а также используя файловое пространство состоящее из каталогов:

/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


скачать

Другие похожие работы: