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

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


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

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

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

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



«ПРАКТИЧЕСКОЕ ЗНАКОМСТВО СО СТАНДАРТНОЙ УТИЛИТОЙ 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.


Смотрите также:
Отчет по лабораторной работе №2 по курсу «Операционные системы»
38.12kb.
1 стр.
Отчет по лабораторной работе №4 по дисциплине «Операционные системы»
90.67kb.
1 стр.
Вопросы к экзамену: Зоопарк операционных систем
21.77kb.
1 стр.
Методические указания к лабораторной работе по курсу «Механизация и технология животноводства»
189.46kb.
1 стр.
Отчет по лабораторной работе №2 по курсу «Электроника»
177.26kb.
1 стр.
Отчет по лабораторной работе №8 по дисциплине «Информационно-поисковые системы»
40.89kb.
1 стр.
Системное программное обеспечение. Операционные системы. Работа в среде windows
250.05kb.
1 стр.
Отчет по лабораторной работе по курсу Общая физика Проверка законов теплового излучения
25.49kb.
1 стр.
Практикум по курсу «Операционные системы». Пособие предназначено для студентов направления 230100 «Информатика и вычислительная техника»
2044.32kb.
35 стр.
Отчет по лабораторной работе №3 «Модели стационарных рядов arma, и нестационарных arima»
55.97kb.
1 стр.
Рейтинг за работу Преподаватель к т. н., доцент / Ю. С. Бадаев / отчёт о лабораторной работе по курсу «Физические основы получения информации» исследование акселерометра 11. Фопи. 200100. Лр. 01 Работу
44.99kb.
1 стр.
Рейтинг за работу Преподаватель к т. н., доцент / Ю. С. Бадаев / отчёт о лабораторной работе по курсу «Физические основы получения информации» измерение временных параметров сигналов цифровыми приборами 11. Фопи. 200100. Лр. 03 Работу
34.51kb.
1 стр.