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

Учащимся

Учителям



Отчет по лабораторной работе №2 по дисциплине «Операционные системы»



Национальный исследовательский

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

Институт – Кибернетический Центр

Направление – Информатика и вычислительная техника

Кафедра – Оптимизации систем управления

«ПРАКТИЧЕСКОЕ ЗНАКОМСТВО СО СТАНДАРТНОЙ УТИЛИТОЙ GNU MAKE ДЛЯ ПОСТРОЕНИЯ ПРОЕКТОВ В ОС UNIX»

Отчет по лабораторной работе № 2
по дисциплине «Операционные системы»

Выполнил

Студент группы 8в83 ___________ А.В. Колчанов


Проверил ___________ Д. В. Сидоров
Томск 2011

Цель работы

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

Задание

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

Выполнение работы

2. Создать простейшую программу на C/C++ из как минимум двух исходных файлов

Файл Main.cpp:

#include

#include

#include "Func.cpp"

using namespace std;

int main()

{

double n;

cout<<"Hello! This program converts miles to kilometers.\n";

cout<<"Enter miles: ";

cin>>n;

cout << n;

cout <<" miles is ";

cout <
cout << " kilometers.\n";

cin.get();

return 0;

}

Файл Func.cpp:

static double Convert(double n)

{

return n*1.6;

}

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

iEdit: Main.o Func.o

g++ Main.o Func.o -o iEdit

Main.o: Main.cpp

g++ -c Main.cpp

Func.o: Func.cpp

g++ -c Func.cpp

Флаги С++-компилятора G++:

  • -c – компиляция без линковки, на выходе - для каждого исходного файла свой объектный файл.

  • -ofile – поместить результат компиляции в файл file.

4. Выполнить программу (скомпилировать, при необходимости отладить)

andrey@Andrey4623:~/laba2$ ls

Func.cpp Main.cpp makefile



andrey@Andrey4623:~/laba2$ make

g++ -c Main.cpp

g++ -c Func.cpp

g++ Main.o Func.o -o iEdit



andrey@Andrey4623:~/laba2$ ls

Func.cpp Func.o iEdit Main.cpp Main.o makefile



andrey@Andrey4623:~/laba2$ ./iEdit

Hello! This program converts miles to kilometers.

Enter miles: 2

2 miles is 3.2 kilometers.

5. Показать, что при изменении одного исходного файла и последующем вызове Make будут исполнены только необходимые команды компиляции (неизмененные файлы перекомпилированы не будут) и изменены атрибуты и/или размер объектных файлов (файлы с расширением .o)

Внесем изменения в файл Func.cpp. Компилируется только измененный файл.

andrey@Andrey4623:~/laba2$ make

g++ -c Func.cpp

g++ Main.o Func.o -o iEdit

Теперь не будем вносить изменения в файлы и еще раз соберем проект.

andrey@Andrey4623:~/laba2$ make

make: `iEdit' не требует обновления.

Задание 6. Создать make-файл с высоким уровнем автоматизированной обработки:

  • имя скомпилированной программы (выполняемый или бинарный файл), флаги компиляции и имена каталогов с исходными файлами и бинарными файлами (каталоги src, bin и т. п.) задаются с помощью переменных в Makefile;

  • зависимости исходных файлов на языке C/С++ и цели в make-файле должны формироваться динамически.

  • наличие цели clean, удаляющей временные файлы;

Каталог проекта должен быть структурирован следующим образом:

  • /src – каталог с исходными файлами;

  • /bin – каталог с бинарными файлами (скомпилированными);

  • Makefile.

Makefile:

override compile_flags := -pipe

source_dir:= src

binar_dir:= bin

search_wildcards:=$(addsuffix /*.cpp, $(source_dir))

iEdit:$(notdir $(patsubst %.cpp, %.o,$(wildcard $(search_wildcards))))

g++ $^ $(compile_flags) -o $(addprefix $(addsuffix /,$(binar_dir)),$@)

VPATH:=$(source_dir)

%.o: %.cpp

g++ -c $<

clean:

rm *.o

rm bin/iEdit

Результат работы:

andrey@Andrey4623:~/laba2$ make

g++ -c src/Func.cpp

g++ -c src/Main.cpp

g++ Func.o Main.o -pipe -o bin/iEdit




andrey@Andrey4623:~/laba2$ cd bin

andrey@Andrey4623:~/laba2/bin$ ls

iEdit



andrey@Andrey4623:~/laba2/bin$ ./iEdit

Hello! This program converts miles to kilometers.

Enter miles: 5

5 miles is 8 kilometers.

Вывод

В ходе данной лабораторной работы были изучены методы построения программных проектов с использованием утилиты GNU Make. Изучили, как создавать make-файл, для чего он нужен и его структуру.


страница 1


скачать

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