Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_А.Парамонов.doc
Скачиваний:
18
Добавлен:
08.09.2019
Размер:
7.82 Mб
Скачать

Опции запуска сценариев

Опция

Описание

-n

Читать все команды, но не выполнять их.

-v

Отображать все строки по мере их чтения.

-x

Отображать все команды и их аргументы по мере их выполнения.

Общая методика отладки сценария состоит в том, что прежде, чем запустить его на выполнение, необходимо проверить его синтаксис с помощью опции -п. А для большей детализации рекомендуется использовать совокупность ключей -nv. На следующем этапе, после устранения синтаксических ошибок, проводится отладка с трассировкой с помощью опции -х.

2.4.8.Makefile – управление компиляцией

Компиляция исходного текста программы осуществляется командой make [19], которая осуществляет сборку по набору правил, определенных в специальном файле Makefile, располагающемся рядом с исходным текстом.

При вызове команды make каждый измененный исходный C-файл должен быть перекомпилирован. Если был изменен заголовочный файл, перекомпилируется каждый исходный C-файл, который его включает. Каждая компиляция порождает объектный файл, соответствующий исходному файлу. Наконец, если какой-либо исходный файл был перекомпилирован, все объектные файлы, как новые, так и оставшиеся от предыдущих компиляций, должны быть скомпонованы вместе для создания нового исполняемого файла.

В общем случае make-файл состоит из набора правил следующего вида:

цель1 … цельN : зависимость1 … зависимостьM

[набор команд]

Цель обычно представляет собой имя файла, генерируемого программой make; примерами целей являются исполняемые или объектные файлы. Цель может также быть именем выполняемого действия.

Зависимость – это файл, используемый как вход для порождения цели. Часто цель зависит от нескольких файлов.

Набор команд представляет собой действия, которые выполняет make. Правило может иметь более, чем одну команду – каждую на своей собственной строке, при этом каждая команда должна начинаться с символа табуляции.

Вызов команды make без параметров приводит к выполнению первого правила из списка, при этом сначала строятся все необходимые для данного правила зависимости. Однако при вызове команды make можно явно указать имя правила, которое необходимо выполнить.

Стандарт IEEE 1003.2-1992 (POSIX.2) также предусматривает поддержку специальных функций, упрощающих работу с файлами, строками и т.д. Вызов функции осуществляется следующим образом:

$(имя_функции аргумент1 … аргументN)

Примеры make-файлов, использованных для сборки ПС ЭТ, могут быть найдены в приложении 1.

2.5.Использование библиотек в ос Linux

2.5.1.Статические и динамические библиотеки

Библиотека представляет собой набор подпрограмм, который позволяет коду этих подпрограмм использоваться в виде отдельных модулей [20]. Исполняемые файлы и библиотеки создают взаимные ссылки в процессе связывания (линковки), который осуществляется редактором связей (линковщиком).

В первом приближении библиотеки можно разделить на статические и динамические.

Статические библиотеки являются набором объектных файлов и традиционно имеют расширение «.а» в Linux. Когда программа связывается со статической библиотекой, машинный код из объектных файлов для каждой используемой программой функции библиотеки копируется из библиотеки в конечный исполняемый файл. Главным минусом подобного способа связи является значительное увеличение размера исполняемого файла.

В отличие от статических, в динамических библиотеках (расширение «.so») код библиотеки не прикрепляется к исполняемому файлу во время связывания. В зависимости от того когда и как осуществляется привязка подпрограмм по адресам, процесс связывания можно разделить на следующие этапы:

  • предварительное связывание;

  • связывание на этапе загрузки;

  • неявное связывание во время запуска;

  • явное связывание во время запуска.

Предварительное связывание позволяет ускорить запуск исполняемого файла за счет сохранения в нем информации об используемых динамических библиотеках на этапе его сборки.

Связывание на этапе загрузки заключается в том, что при запуске исполняемого файла операционная система осуществляет поиск всех необходимых динамических библиотек по информации, сохраненной в данном файле на этапе предварительного связывания. Если какая либо библиотека не найдена, выводится соответствующее сообщение об ошибке.

При вызове подпрограммы динамической библиотеки возможны два варианта связывания – явное и неявное. В случае явного связывания осуществляется поиск по имени и вызов функции непосредственно во время исполнения. В случае неявного связывания прототип функции известен заранее и объявлен в соответствующем заголовочном файле. Второй способ наиболее распространен и был использован при разработке рассматриваемого программного средства.