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

Учащимся

Учителям



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


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

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

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

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

Кафедра информатики и проектирования систем

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

Отчет по лабораторной работе №2
по курсу «Операционные системы»
Студент группы 8В72 ___________________ М. В. Шевчик
Проверил ассистент ___________________ Д. В. Сидоров

Томск 2010

Цель работы

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

Задание

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

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

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

Файл lab2.cpp:

#include

#include

#include

#include "unit21.cpp"
int main(){

clrscr();

int n;

cout<<"enter number \n";

cin>>n;

cout<
getch();

return 0;

}
Файл lab21.cpp:

int Function(int arg)

{

return arg*arg;

}

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

iEdit: lab2.o lab21.o

g++ lab2.o lab21.o –o iEdit

lab2.o: lab2.cpp

g++ -c lab2.cpp

lab21.o: lab21.cpp

g++ -c lab21.cpp

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

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

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

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

g2u13@linux ~$ ls

lab2.cpp lab21.cpp makefile

g2u13@linux ~$ make

g++ -c lab2.cpp

g++ -c lab21.cpp

g++ lab2.o lab21.o –o iEdit

g2u13@linux ~$ ls

lab2.cpp lab2.o iEdit* lab21.cpp lab21.o makefile

g2u13@linux ~$ ./iEdit*

enter number 2

4

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

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

g2u13@linux ~$ make

g++ -c lab21.cpp

lab21.cpp:4:2: warning: no newline at end of file

g++ lab2.o lab21.o -o 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 $<

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

g2u13@linux ~/projekt$ make

g++ -c src/lab2.cpp

In file included from /usr/lib/gcc/i586-trustix-linux/3.4.4/../../../../include/c++/3.4.4/backward/iostream.h:31,

from src/lab2.cpp:1:

/usr/lib/gcc/i586-trustix-linux/3.4.4/../../../../include/c++/3.4.4/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the header for the header for C++ includes, or instead of the deprecated header . To disable this warning use -Wno-deprecated.

In file included from src/lab2.cpp:4:

src/lab2.h:8:2: warning: no newline at end of file

src/lab2.cpp:14:3: warning: no newline at end of file

g++ -c src/lab21.cpp

src/lab21.cpp:4:2: warning: no newline at end of file

g++ lab2.o lab21.o -pipe -o bin/iEdit

g2u13@linux ~/projekt$ cd bin

g2u13@linux ~/projekt/bin$ ./iEdit

enter number

2

8

Вывод:

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

страница 1


скачать

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