Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. Инструментальные средства разработки ПО в ОС UNIX

С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. Инструментальные средства разработки ПО в ОС UNIX, страница 5

PDF-файл С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. Инструментальные средства разработки ПО в ОС UNIX, страница 5 Операционные системы (38616): Книга - 3 семестрС.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. Инструментальные средства разработки ПО в ОС UNIX: Операционные системы - PDF, страница 5 (386162019-05-08СтудИзба

Описание файла

PDF-файл из архива "С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. Инструментальные средства разработки ПО в ОС UNIX", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 5 страницы из PDF

Крометого, каждый раз все исходные файлы будут компилироваться отначала до конца, что в случае больших проектов занимает много25времени. Поэтому обычно компиляция программы выолняется в дваэтапа: компиляция объектных файлов и компоновка исполняемойпрограммы из объектных файлов. Каждому .c файлу теперьсоответствует объектный файл, имя которого в POSIX-системахимеет суффикс .o. Таким образом, в рассматриваемом случаепрограмма earth компонуется из объектных файлов arthur.o, trillian.oи prosser.o следующей командой:gcc arthur.o trillian.o prosser.o -o earthКаждый объектный файл должен быть полученсоответствующего исходного файла следующей командой:изgcc -c arthur.cОбратите внимание, что явно задавать имя выходного файланеобязательно.

Оно будет получено из имени компилируемогофайла заменой суффикса .c на суффикс .o. Итак, для компиляциипрограммы earth теперь необходимо выполнить четыре команды:gccgccgccgcc-c arthur.c-c trillian.c-c prosser.carthur.o trillian.o prosser.o -o earthХотя теперь для компиляции программы необходимо выполнитьчетыре команды вместо одной, взамен получаются следующиепреимущества:• если изменение внесено в один файл, например, в файлprosser.c, нет необходимости перекомпилировать файлыtrillian.o или arthur.o; достаточно перекомпилировать файлprosser.o, а затем выполнить компоновку программы earth;• компиляция объектных файлов arthur.o, trillian.o и prosser.o независит друг от друга, поэтому может выполнятьсяпараллельнонамногопроцессорном(многоядерном)компьютере.В случаесоответствующихфайл нуждается впомощь приходитдля компиляциинескольких исходных .c и .h файлов ипромежуточных .o файлов отслеживать, какойперекомпиляции, становится сложно, и здесь напрограмма make.

По описанию файлов и командпрограмма makе определяет, какие файлы26нуждаются в перекомпиляции, и может выполнять перекомпиляциюнезависимых файлов параллельно.Файл A зависит от файла B, если для получения файла Aнеобходимо выполнить некоторую команду над файлом B. Можносказать, что в программе существует зависимость файла A от файлаB. В нашем случае файл arthur.o зависит от файла arthur.c, а файлearth зависит от файлов arthur.o, trillian.o и prosser.o. Можно сказать,что файл earth транзитивно зависит от файла arthur.c.Зависимость файла A от файла B называется удовлетворенной,если:• все зависимости файла B от других файлов удовлетворены;• файл A существует в файловой системе;• файл A имеет дату последней модификации не раньше датыпоследней модификации файла B.Если все зависимости файла A удовлетворены, то файл A ненуждается в перекомпиляции. В противном случае сначалаудовлетворяются все зависимости файла B, а затем выполняетсякоманда перекомпиляции файла A.Например, если программа earth компилируется в первый раз,то в файловой системе не существует ни файла earth, ни объектныхфайлов arthur.o, trillian.o, prosser.o.

Это значит, что зависимостифайла earth от объектных файлов, а также зависимости объектныхфайлов от .c файлов не удовлетворены, то есть все они должны бытьперекомпилированы. В результате в файловой системе появятсяфайлы arthur.o, trillian.o, prosser.o, даты последней модификациикоторыхбудутбольшедатпоследнеймодификациисоответствующих .c файлов (в предположении, что часы накомпьютере идут правильно, и что в файловой системе нет файлов«из будущего»).

Затем будет создан файл earth, дата последнеймодификации которого будет больше даты последней модификацииобъектных файлов.В получившейся конфигурации все зависимости всех файловдруг от друга удовлетворены, и поэтому для компиляции программыearth не нужно выполнять никаких команд.27Предположим теперь, что в процессе разработки был измененфайл prosser.c. Его время последнего изменения теперь большевремени последнего изменения файла prosser.o.

Зависимостьprosser.o от prosser.c становится неудовлетворенной, и, какследствие, зависимость earth от prosser.o также становитсянеудовлетворенной. Чтобы удовлетворить зависимости необходимоперекомпилировать файл prosser.o, а затем файл earth. Файлыarthur.o и trillian.o можно не трогать, так как зависимости этихфайлов от соответствующих .c файлов удовлетворены.Такова общая идея работы программы make и, на самом деле,всехпрограммуправлениясборкойпроекта:ant(http://ant.apache.org/), scons (http://www.scons.org/) и др.Хотя утилита make присутствует во всех системахпрограммирования, вид управляющего файла или набор опцийкомандной строки могут сильно различаться. Далее будетрассматриваться командный язык и опции командной строкипрограммы GNU make. В дистрибутивах операционной системыLinux программа называется make.

В BSD, как правило, программаGNU make доступна под именем gmake.Файл описания проекта может содержать описанияпеременных, описания зависимостей и описания команд, которыеиспользуются для компиляции. Каждый элемент файла описанияпроекта должен, как правило, располагаться на отдельной строке.Для размещения элемента описания проекта на нескольких строкахиспользуется символ продолжения \ точно так же, как в директивахпрепроцессора языка Си.Определения переменных записываются следующим образом:<имя> = <определение>Использование переменной записывается в одной из двух форм:$(<имя>)или${<имя>}Эти формы равнозначны.28Переменные рассматриваются как макросы, то естьиспользование переменной означает подстановку текста изопределения переменной в точку использования. Если приопределении переменной были использованы другие переменные,подстановка их значений происходит при использованиипеременной (опять так же, как и в препроцессоре языка Си).Зависимости между компонентами определяются следующимобразом:<цель> : <цель1> <цель2> ...

<цельn>Где <цель> - имя цели, которое может быть либо именем файла,либо некоторым именем, обозначающим действие, которому несоответствует никакой файл, например clean. Список целей в правойчасти задает цели, от которых зависит <цель>.Если описание проекта содержит циклическую зависимость,то есть, например, файл A зависит от файла B, а файл B зависит отфайла A, такое описание проекта является ошибочным.Команды для перекомпиляции цели записываются послеописания зависимости.

Каждая команда должна начинаться ссимвола табуляции (\t). Если ни одной команды для перекомпиляциицели не задано, будут использоваться стандартные правила, еслитаковые имеются. Для определения, каким стандартным правиломнеобходимо воспользоваться, обычно используются суффиксы именфайлов. Если ни одна команда для перекомпиляции цели не задана истандартное правило не найдено, программа make завершается сошибкой.Для программы earth простейший пример файла Makefile длякомпиляции проекта может иметь вид:earth : arthur.o trillian.o prosser.ogcc arthur.o trillian.o prosser.o -o eartharthur.o : arthur.cgcc -c arthur.ctrillian.o : trillian.cgcc -c trillian.cprosser.o : prosser.cgcc -c prosser.c29Однако, в этом описании зависимостей не учтены .h файлы.Например, если файл arthur.h подключается в файлах arthur.c иtrillian.c, то изменение файла arthur.h должно приводить кперекомпиляции как arthur.c, так и trillian.c.

Получается, что .oфайлы зависят не только от .c файлов, но и от .h файлов, которыевключаются данными .c файлами непосредственно или косвенно. Сучетом этого файл Makefile может приобрести следующий вид:earth : arthur.o trillian.o prosser.ogcc arthur.o trillian.o prosser.o -o eartharthur.o : arthur.c arthur.hgcc -c arthur.ctrillian.o : trillian.c trillian.h arthur.hgcc -c trillian.cprosser.o : prosser.c prosser.h arthur.hgcc -c prosser.cПервой в списке зависимостей обычно записывается «главная»зависимость, а затем записываются все остальные файлызависимости.В командной строке программы make можно задать имя цели,которую требуется (при необходимости) перекомпилировать.

Так,при запускеmake prosser.oбудет при необходимости перекомпилирован только файл prosser.o ите файлы, от которых он зависит, все прочие файлы затронуты небудут. Если в командной строке имя цели не указано, берется перваяцель в файле. В нашем случае это будет цель earth.Если придерживаться хорошего стиля написания Makefile, токаждый Makefile должен содержать как минимум два правила: all –основноеправило,котороесоответствуетосновномупредназначению файла, и правило clean, которое предназначено дляудаления всех рабочих файлов, создаваемых в процессе компиляции.В случае программы earth рабочими файлами можно считать самисполняемый файл программы earth, а также все объектные файлы.С учетом этих дополнений файл Makefile примет вид:all : earthearth : arthur.o trillian.o prosser.ogcc arthur.o trillian.o prosser.o -o earth30arthur.o : arthur.c arthur.hgcc -c arthur.ctrillian.o : trillian.c trillian.h arthur.hgcc -c trillian.cprosser.o : prosser.c prosser.h arthur.hgcc -c prosser.cclean :rm -f earth *.oОбратите внимание, что у правила clean отсутствует списокфайлов, от которых этот файл зависит.

Поскольку существованиефайла с именем clean в рабочем каталоге не предполагается, командаrm -f … будет выполняться каждый раз, когда make запускается навыполнение командойmake cleanДанный файл, безусловно, решает задачу автоматизациисборки программы earth. Теперь можно придать этому файлу болееобщий вид, чтобы в этот файл легче было вносить изменения.Во-первых, можно параметризовать название используемогокомпилятора, а также предоставить возможность управлятьпараметрами командной строки компилятора. Для заданиякомпилятора можно определить переменную CC, для задания опцийкомандной командной строки компиляции объектных файлов —переменную CFLAGS, а для задания опций командной строкикомпоновки выходной программы — переменную LDFLAGS.Получим следующий файл:CC = gccCFLAGS = -Wall -O2LDFLAGS = -sall : earthearth : arthur.o trillian.o prosser.o$(CC) $(LDFLAGS) arthur.o trillian.o prosser.o -o eartharthur.o : arthur.c arthur.h$(CC) $(CFLAGS) -c arthur.ctrillian.o : trillian.c trillian.h arthur.h$(CC) $(CFLAGS) -c trillian.cprosser.o : prosser.c prosser.h arthur.h$(CC) $(CFLAGS) -c prosser.cclean :rm -f earth *.o31Теперь можно изменить используемый компилятор, не толькоотредактировав Makefile, но и из командной строки.

Например,запуск программы make в видеmake CC=iccпозволит для компиляции программы использовать не gcc, а Intelкомпилятор Си. Аналогично запускmake CFLAGS=”-g” LDFLAGS=”-g”позволит включить отладочную информацию в генерируемыеобъектные файлы и исполняемую программу.Во-вторых, можно избавиться от дублирования имен файловсначала в зависимостях, а потом в выполняемых командах. Дляэтого могут быть использованы специальные переменные $^, $< и$@. Переменная $@ раскрывается в имя цели, стоящей в левойчасти правила. Переменная $< раскрывается в имя первойзависимости в правой части правила. Переменная $^ раскрывается всписок всех зависимостей в правой части.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5285
Авторов
на СтудИзбе
418
Средний доход
с одного платного файла
Обучение Подробнее