Средства для создания приложений в ОС UNIX (Указания к лабораторной работе № 5), страница 2

в) в директорию hello запишем файл file.c.

3)  Созданную рабочую директорию свяжем с хранилищем, для этого находясь в рабочей директории workDIR выполним команду

$ cvs –d /home/brigades/pmXXXX/cvsroot checkout –l .

4)  Передача проекта (каталога hello) и файла file.c в хранилище.

Для этого необходимо выполнить следующие команды

а) $ cvs –d /home/brigades/pmXXXX/cvsroot add hello

б) $ cvs –d /home/brigades/pmXXXX/cvsroot add hello/file.c

в) $ cvs –d /home/brigades/pmXXXX/cvsroot commit

При выполнении команды commit вызывается редактор для ввода комментария (пояснения). Например: “Пользователь pmXXXX передал файл file.c впервые под управление CVS”.

После ввода пояснения выполняется стандартные действия: ESC -> : -> wq .

Далее после извлечения и записи новой версии файла необходимо использовать только команду commit (команду add использовать не надо, так как там уже есть директория hello и файл file.c). В хранилище файл имеет вид (file.c,v), где v – названия версий.

5)  Работа в рабочем каталоге (отладка файла file.c).

а) получаем исполняемый код (компилятор gcc);

б) исполняемый код запускаем на выполнение. Если работает, то переходим на шаг 6;

в) получаем исполняемый код для отладчика (gcc с ключом g);

г) запускаем отладчик. Находим ошибку и выходим из отладчика;

д) запускаем vi и исправляем ошибку;

е) исправленную версию записываем в хранилище;

ж) переходим в пункт а.

6)  Выдать обзор исправлений в программе file.c

$ cvs –d ~/cvsroot rdiff –r 1.1 .

КОМПИЛЯЦИЯ ИСХОДНОГО ТЕКСТА И ПОСТРОЕНИЕ ИСПОЛНЯЕМОГО ФАЙЛА.

Основное  назначение  компилятора с языка  Си  (в  GNU UNIX) заключается в  компиляции  всей  программы  в  целом  и получении исполняемого модуля.

Одно из полезных свойств компилятора Си - его способность по суффиксам     определять   типы   файлов.    По   суффиксу   ".c" компилятор распознает, что файл abcd.c должен компилироваться,  а по суффиксу ".o", что файл abcd.о является объектным  модулем   и для   получения   исполняемой   программы  необходимо   выполнить редактирование  связей.  Простейший пример  командной строки  для компиляции программы abcd.c и построения исполняемого модуля abcd имеет вид:

     $ cc -o abcd abcd.c

 При   разработке большой программы,  состоящей из нескольких исходных  файлов  заголовков,  приходится  постоянно  следить  за файлами,  которые требуют   перекомпиляции после внесения изменений.  Программа  make  освобождает  пользователя  от  такой рутинной работы и служит для  документирования взаимосвязей между файлами.   Описание   взаимосвязей  и   соответствующих  действий хранится в так называемом make-файле, который по умолчанию имеет имя makefile или  Makefile.  Например,  makefile для программы abcd.c мог бы иметь вид:

#

# Makefile for abcd.c

#

#  Compile abcd.c normaly

    abcd:abcd.c

            cc -o abcd abcd.c

# Compile abcd.c be using debugging

    testabcd:abcd.c

            cc -o testabcd -g abcd.c

# End Makefile for abcd.c

В общем случае make-файл содержит последовательность записей (строк),  определяющих  зависимости между файлами.  Первая строка записи  представляет  собой  список  целевых  (зависимых) файлов, разделенных пробелами,  за  которыми  следует  двоеточие  и список файлов, от которых зависят целевые.

Текст,  следующий за  точкой  с запятой,  и  все последующие строки,  начинающиеся  с литеры табуляции,  являются командами OC UNIX, которые необходимо выполнить для обновления целевого файла.      Таким образом, спецификация взаимосвязей имеет формат: