Отчет по лабораторной работе №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 – компиляция без линковки, на выходе - для каждого исходного файла свой объектный файл.
-o – file – поместить результат компиляции в файл 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
скачать
Другие похожие работы: