2. первые шаги начало и конец сеанса работ


Название2. первые шаги начало и конец сеанса работ
страница9/12
ТипДокументы
filling-form.ru > бланк заявлений > Документы
1   ...   4   5   6   7   8   9   10   11   12

11. СРЕДСТВА РАЗРАБОТКИ ПРОГРАММ



Система UNIX обеспечивает богатый набор средств для раз-

работки программ, включающий компиляторы, линкер, символьный

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


11.1 Вызов компиляторов



В системе UNIX имеются компиляторы с языков C, ФОРТРАН-77

и ПАСКАЛЬ и другие. Команды вызова компилятора имеют вид cc,

f77 или fc, pc и т.п.

Параметрами этих команд являются файлы с текстами прог-

рамм на исходных языках, имена которых должны оканчиваться

на .c, .f, .p и т.п. соответственно.

Примеры:

$ cc program.c

$ fc test.f

$ pc example.p

Результатом работы компилятора является файл исполняемого

кода, имеющий по умолчанию имя a.out. Если вы хотите другое

имя, его можно указать явно ключом -o <имя> при вызове ком-

пилятора.

Пример:

$ fc -o test test.f

$ ls

test

test.f

$


11.2. Линкер



На практике программы создаются из множества раздельно

транслируемых модулей, каждый из которых занимает отдельный

файл. Результатом компиляции каждого модуля является файл

объектного (перемещяемого) кода, имя которого получается за-

меной .c (или .f, .p и т.д.) на .c. Затем все объектные фай-

лы объединяются в единую программу, помещаемую в файл испол-

няемого кода, посредством линкера. Линкер может вызываться

как независимой командой ld, так и автоматически при выпол-

нении команд вызова компилятора cc, fc, pc и т.д. В послед-

нем случае эти команды могут иметь несколько параметров-фай-

лов, имена которых могут оканчиваться не только на .c, .f,

.p, ..., но и на .o. Файлы исходного текста компилируются, а

затем все файлы объектного кода, как полученные в результате

компиляции, так и параметры команды вызова компилятора, пе-

редаются линкеру. Результатом по-прежнему является файл с

именем по умолчанию a.out, если вы не указали явно другое

имя.

При этом, как правило, объектные файлы уничтожаются. Что-

бы сохранить их, можно подавить автоматический вызов линкера

ключом -c (только компиляция) в команде вызова компилятора.

Пример:

$ fc -c test.f check prove.f

$ ld /lib/frt0.o *.o -lF77

$ ls

a.out

check.f

check.o

prove.f

prove.o

test.f

test.o

$

Здесь добавлены файл /lib/frt0.o стартового модуля для

программы на ФОРТРАНе (для C /lib/crt0.o) и библиотека -

lF77 подпрограмм для ФОРТРАНа (для C - lc); могут быть до-

бавлены и другие библиотеки. Обозначение -lx является сокра-

щением для /lib/libx.a для любого x. Следует заметить, что

библиотеки указываются последними (не являются ключами ко-

манды ld). При автоматическом вызове линкера стартовый мо-

дуль и ряд библиотек вызываются по умолчанию. Чтобы их уви-

деть, следует применить ключ -v в командах вызова компилято-

ра.


11.3. Библиотеки



Как мы показали выше, на вход линкера могут подаваться не

только файлы объектного кода, но и библиотечные файлы, кото-

рые оказываются очень удобным средством хранения объектных

модулей, если их становится очень много.

Имя библиотечного файла обычно оканчивается на .a. Имеет-

ся команда ar (архив) для создания, пополнения и просмотра

библиотечных файлов.

Пример создания библиотеки из трех объектных файлов:

$ ar rcv exam.a test.o check.o prove.o

a - test.o

a - check.o

a - prove.o

$

Здесь ключи команды ar означают:

r - заменить (replace) модули в библиотеке;

c - создать (create) библиотеку;

v - печатать включаемые модули (verbose).

Теперь мы можем распечатать содержимое библиотеки ко-

мандой ar с ключом t (table of content):

$ ar t exam.a

test.o

check.o

prove.o

$

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

или линкера, например:

$ ld -o test /lib/frt0.o exam.a -lF77

Следует помнить, что порядок размещения модулей в библио-

теке существенен.

Например, если подпрограмма test вызывает подпрограмму

check, то test.o должен предшествовать check.o в библиотеке.

Для выявления и печати таких зависимостей предназначена ко-

манда lorder.


11.4. Символьный отладчик



Как правило, имеется единый символьный отладчик для прог-

рамм на нескольких языках программирования, компиляторы ко-

торых вырабатывают объектный код и таблицы символов в едине-

ом формате. Символьный отладчик обычно имеет альтернативные

имена для разных языков, например, cdb, fdb и pdb для языков

C, ФОРТРАН-77 и PASCAL соответственно. Вызов отладчика про-

изводится одноименной командой, в которой указывается файл

кода отлаживаемой программы, по умолчанию a.out. Для генера-

ции и сохранения отладочной информации (таблиц символов и

т.п.) компиляция программы должна производиться с ключом -g.

Пример:

$ fc -g test.f check.f prove.f

$ fdb

>

Знак > - подсказка отладчика, приглашающая вводить коман-

ды отладчика. Команды отладчика позволяют:

- посмотреть текущие значения переменных выполняемого

оператора, строки исходного текста, процедуры, файла в ука-

занном формате;

- устанавливать и сбрасывать точки прерывания для пошаго-

вого выполнения отлаживаемой программы между точками преры-

вания и/или с постоянным шагом;

- задавать утверждения, проверяемые перед выполнением

каждого оператора для останова перед теми операторами, для

которых утверждение истинно;

- копировать все сигналы, связанные с отлаживаемой прог-

раммой;

- записывать и повторно использовать команды сеанса от-

ладки (командный файл на входе отладчика).

Более подробную информацию о символьном отладчике можно

найти в руководстве по команде cdb.


11.5. Средства оценки эффективности исполнения программы



Имеются средства, позволяющие выяснить, сколько времени и

места требуется для выполнения программы и ее частей. Эти

средства полезны для сравнения качества реализации программы

на разных языках программирования или в разных версиях сис-

темы UNIX.

Команда time позволяет выяснить три значения потраченного

на решение указанной программы времени в секундах: реально-

го, равного времени, замеренному по секундомеру, зависящего

от количества пользователей в данный момент; пользователь-

ского, равного времени счета программы по командам пользова-

теля, и системного, равного времени системы при обслуживании

этой программы. Команда time в Shell и в C-Shell имеет раз-

ные формы выдачи.
Пример (в Shell):

$ time test

real 30.0

user 27.6

sys 0.5

$

Команда size показывает размер памяти в байтах трех раз-

личных частей программы: выполняемого кода (называемого

текстом), области инициируемых данных и области неинициируе-

мых данных.
Пример:

$ size test

1356 + 260 + 613 = 2226 b = 004265 b

Общий размер программы test равен 4265 байтов.

Если имя оцениваемого файла отсутствует, подразумевается

a.out.

Для программы на языке C есть более тонкое средство, поз-

воляющее получить профиль программы, показывающий для каждой

подпрограммы долю времени ее выполнения в процентах (%

time), суммарное время ее выполнения в секундах (cumsecs),

количество ее вызовов (# call) и время, потраченное на один

вызов в миллисекундах (ms/call). Для получения профиля сле-

дует перетранслировать программу с ключом -p (профиль), а

после запуска программы, во время которого статистическая

информация будет собрана в файле mon.out, выполнить команду

prof для обработки указанного файла.
Пример:

$ cc -p program.c

$ mv a.out program

$ program

$ ls

mon.out

program

program.c

$ prof program

name % time cumsecs # call ms/call

conv 58.6 11.38 2000 5.69

strcat 30.1 9.50 100 95.0

main 1.1 2.1 1 2.1

. . . . . . . . . . . . . . . . . . . . .

atoi 0.0 0.1 1 0.0


11.6. Сопровождение программ: make



Если программный продукт велик, содержит много исходных,

объектных и исполняемых модулей, задача его сопровождения и

модификации может быть облегчена утилитой make, которая поз-

воляет автоматизировать все рутинные операции по перетранс-

ляции и перелинкированию всех или части модулей при внесении

в них изменений.

Утилита make работает с файлом Makefile, в который запи-

сывается необходимая информация о всех файлах программы и

связях между ними.
Пример:

$ cat Makefile

FILES = test.f check.f prove.f

OBJECTS = test.o check.o prove.o

test: $ {OBJECTS}

ld -o test/lib/frt0.o ${OBJECTS} -lF77

$

Как видно из примера, в файле Makefile помещаются макро-

определения, имеющие вид:
строка1 = строка2
и правила, имеющие вид:
конечный файл : исходные файлы

команда
Первая строка правила называется зависимостью. Зависи-

мость указывает, что конечный файл является результатом ра-

боты команды, указанной во второй строке правила, над исход-

ными файлами. Внутри зависимости можно ссылаться на макрооп-

ределения в форме $(строка1).

Подготовив такой Makefile, можно модифицировать прог-

рамму test одним вызовом команды make, например:

$ make

fc -c test.f

fc -c check.f

fc -c prove.f

ld -o test/lib/frt0.o check.o prove.o -lF77

$

Команда выполняется только в том случае, если дата созда-

ния или модификации конечного файла меньше, чем соответству-

ющая дата хотя бы одного исходного файла (то есть если ко-

нечный файл устарел).

Возможно изменить только часть программы, например:

$ make prove.o

fc -c prove.f

$

В данном случае утилита make по умолчанию "знает", что

файл prove.o зависит от файла prove.f и реализация этой за-

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

Полезный ключ -n утилиты make позволяет не выполняя пред-

писанных действий предварительно посмотреть, что было бы вы-

полнено, если бы ключ не был подан.

Подробнее о make можно узнать из руководства по команде

make и книг [7,8].


11.7. Средства реализации языков программирования



До сих пор речь шла о разработке программ на языках прог-

раммирования, реализованных в системе (т.е. имеющих компиля-

тор и линкер). Если вас, как опытного пользователя, не уст-

раивают эти предопределенные языки и вы хотите реализовать

свой язык, то и в этом вам поможет система UNIX, предостав-

ляя утилиты lex и yacc.

Утилита lex является текстовым процессором, реализующим

лексический анализ, необходимый при создании компиляторов и

других языковых процессоров.

Утилита yacc (yet another compiler compiler) конвертирует

безконтекстную грамматику в таблицы, управляющие граммати-
ческим разбором посредством LR(1)-автомата. Формируемые при

этом правила предшествования позволяют избавиться от двус-

мысленностей исходной грамматики.

Совместное использование утилит lex и yacc является мощ-

ным подспорьем для быстрой реализации языковых процессоров в

среде системы UNIX [9,10,11].

1   ...   4   5   6   7   8   9   10   11   12

Похожие:

2. первые шаги начало и конец сеанса работ icon§ Первые шаги, первые трудности, первые достижения
Д. И. Грищенко; первые судебные дела; формирование адвокатского корпуса; исполняющая обязанности председателя оргбюро Е. И. Николаенко;...

2. первые шаги начало и конец сеанса работ iconПоложение о школьной научно-практической конференции «Первые шаги в науку» общие положения
Научно-практическая конференция «Первые шаги в науку» (далее Конференция) проводится в целях развития интеллектуально-творческого...

2. первые шаги начало и конец сеанса работ iconОбразование — начало—конец

2. первые шаги начало и конец сеанса работ iconЛекция №11. Бухгалтерский баланс коммерческого банка. Начало и завершение...
Основой бухгалтерской службы коммерческого банка является составление баланса. Со вступительного баланса на начало каждого цикла...

2. первые шаги начало и конец сеанса работ iconПрограмма-проект "Семья" Семья и школа это берег и море. На берегу...
В формировании личности ребёнка принимают активное участие дошкольные учреждения и школа, лагеря и трудовые отряды, книги, театр,...

2. первые шаги начало и конец сеанса работ iconОрганизации (нко) и ее первые шаги
Проведение учредительного собрания (съезда, конференции) и подготовка учредительных документов

2. первые шаги начало и конец сеанса работ iconДокументальная история сибири XVII середина XIX вв. Владивосток
I. Сибирские архивы в системе приказных учреждений русского государства (Конец XVI начало XVIII вв.)

2. первые шаги начало и конец сеанса работ iconИнформатика и информационные технологии
Конец XIX — начало XX в был отмечен научно-технической революцией, связанной с появлением и развитием квантово-механических представлений...

2. первые шаги начало и конец сеанса работ iconВ начале пути…
Быть взрослым не всегда просто, но интересно, а главное – от этого никуда не деться. Чтобы твои первые – самые сложные шаги во взрослой...

2. первые шаги начало и конец сеанса работ iconКраткий курс. Под редакцией комиссии ЦК вкп (б) одобрен ЦК вкп (б) 1938 год
Отмена крепостного права и развитие промышленного капитализма в России. Появление современного промышленного пролетариата. Первые...

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск