Главная » Просмотр файлов » GCC - The Complete Reference

GCC - The Complete Reference (537669), страница 30

Файл №537669 GCC - The Complete Reference (GCC - The Complete Reference) 30 страницаGCC - The Complete Reference (537669) страница 302015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 30)

Сама документация стандартов предоставляет разработчикам компиляторов большую свободу действий, многое оставляя на их усмотрение. Все компиляторы Гол)лап действуют в основном одинаково, но каждый из них поддерживает свой собственный диалект. Базовая компиляция В таблице 7. ! приводится список типовых суффиксов имен файлов, которые так или иначе связаны с компиляцией и компоновкой (!)пЫля) программ на языке Гол)гад. Полный список распознаваемых ОСС суффиксов приведен в приложении Г.

Таблица 7.1. Суффиксы имен файлов, связанные с языкам Рогстад Суффвввм Свлврмвввв Фввлв .а Статическая объектная библиотека <архив). Л, Лог, .РОВ Исходный код на языке Рог)ген, не подлежащий предобработке. .Е, Лрр, .РРР Исходный код на языке Рог)гап, подлежащий обработке препроцессором.

.о Объектный файл в формате, пригодном для передачи его компоновщику (анкет). Глава 7. Компиляция программ иа языке Рог(гап 137 Исходный код на языке Рог(гап, предназначенный для предобработки препроцеасором КАТРОЙ. Разделяемая (дииамическая) объектная библиотека.

ва Преобразование отдельного исходного файла в готовую машинную программу При написании программы на традиционном Рог(гад используются только заглавные буквы. Первые шесть позиций символов каждой строки зарезервированы для специальных целей. Первый столбец отводится для символа "с", указывающего строку комментария. Столбцы со второго по шестой зарезервированы для меток. Код операторов начинается с седьмой позиции. Вот пример программы на языке Ромгал, написанной с применением фиксированного формата (также называемого нградициамгым): С Ье11оиог1б. В с РКОСКЛМ НЕЬЬОИОКЬП ив*те( ,1о) 10 РОКМАт('Ье11о, иог16') еьо Ркосклм неьготгокьэ Компилятор ОСС не требует строго использования только заглавных букв, однако соблюдение правил форматирования обязательно, если они прямым образом ве отменены указанием соответствующей опции.

По следующей команде булет выполнена компиляция программы в готовый к выполнению машинный код: 3 д77 Ье11оиог1б.г -о Ье11оиог16 Команда д77 запускает драйвер верхнего уровня дсс, который создает среду окружения, необходимую для компиляции программ на языке лог(гоп, Тот же результат МОжЕт быть получен при использовании ст(вдующей комаиды; 3 дас Ье11оиог1б.х -1ггаЬед1п -1дзс -1га -еЬагеб-11Ьдсс -о Ье11оиог16 Библиотека 11ЫгсЬед1п.

а (задействуемая опцией 1йгсЬедйп) содержит код инициализации и завершения, необходимый для правильного выполнения в операционной среде программы на языке )сот(гал. Библиотека 11Ьд2с. а содержит основяые подпрограммы, необходимые во время выполнения, такие как ввод и вывод. Библиотека 11Ьм.а является системной математической библиотекой. Опция аЬаге(Т-11Ьдсс указывает, что используется разделяемая (зйагед) версия стандар- тноМ библиотеки 11Ьдсс. ССС также позволяет компилировать гог(гал-код свободного формата.

Комментараи отмечаются восклицательным знаком ("! ") в начале строки н продолжаются д) конца строки. Версия предыдущей программы, написанная в свободной форме, ложат иметь операторы и метки, начинающиеся с произвольной позиции: 1 38 Часть!!. Использование Сборного Компилятора ! Ье11оиое1г)хх.т ! Ртодевв Не11оиое16 ие1ее(*,10) 10 Еохвас ( 'Ье11о, иое10' ) еп(( Рсодевв Не11оиоетс Эта программа может компилироваться так же, как и программа предыдущего примера, только в командную строку следует добавить опцию -аггее-йохв; а д77 -Геее-тоев Ье11оиое1сст.т -о Ье11оиоетсвх Из-за принципиальных различий между двумя этими синтаксическими формами следует писать программы либо в свободной форме, либо в фиксированном формате.

Трудно написать программу, которая будет компилироваться в любом варианте формата Рог(гав, потому что различия в синтаксисе комментариев и правилах общего расположения весьма существенны. Преобразование нескольких исходных файлов в исполняемый файл Команда д77 способна компилировать и компоновать несколько исходных файлов на языке Рог!гоп в отдельную машинную программу. В следующем примере программа, исходный текст которой сохранен в файле с именем са11ет. б, выполняет один вызов математической функции и выводит ее результат: С са11ев.т с Ркодклм саььек 1 = Та.тееадеоа(10,20,83) Иихтв(*,10) Атееаде= , 1 10 РОКМАт('А, 15') ЕНП РКООКАИ САЬЬЕК Реализация функции 1атекаде находится в отдельном исходном файле с именем са11еб. б: С са11еа.т с хитвдЕК Ррнстхан хатесадеот(1,3,К) хамееадеов = (1 + 3 + К) / 3 кетпкн енр Ртгнстхон ха.

есадеое Эти два исходных файла компилируются и компонуются в исполнимый файл са11ет следующей командой: Ф д77 са11ег.т са11ед.а -о са11ее Того же результата можно достичь за три действия. Сначала создать объектные файлы для каждого исходного, и затем скомпоновать их в готовую к запуску программу: Глава 7. Компиляция программ на языке гог(гап 1 39 3 д77 -с са11ег.г -о са11ег.о 3 д77 -с са11ег).г -о са11ег).о 3 д77 са11ег.о са11ес.о -о са11ег Генерирование ассемблерного кода Опция -3 указывает компилятору д77 выработать код на языке ассемблера и на этом остановиться. Для выработки ассемблерного кода из исходного файла )ге11оиог1с). й — ранее использованного в этой главе примера, нужно ввести слевуюшую команду: 3 д77 -В )хе11оиог1с.г Выходной ассемблерный файл будет иметь имя Ье11омог1б.

в. Разновидность ассемблерного языка зависит от текущего или назначенного типа целевой платформы компиляции. Предобработка При компиляции Роптал-программы из файла с суффиксом имени . р, . нрр, или .урн, она будет вначале подвергнута предобработке и только затем скомпилирована. Применяемый при этом препроцессор (ргергосеввог), описанный в главе 3, первоначально предназначался для работы с программами на языке С. В следующем примере программа, написанная в свободной форме Рог(гав, использует препроцессор для включения кода функции в главную программу. ( ечепир.в ! Вг)егвпе ПООнрцр В1пс1иг)е 51гиегипс.Ь" 1 ргодгап ечепир ао ЗОО 1=11,аг з = 1гие(1) аггее( ,1О) 300 сопсвпие 10 когпае(15,15) епг) ргодгат е гевар Исходный код функции 1гие () находится в файле с именем 1гиенипс.Ь и будет компилироваться по-разному, в зависимости от того, определен ли макрос вопмрцр.

Эта функция округляет любое нечетное число до четного. По умолчанию функция округляет к ближайшему четному числу в сторону уменьшения, но если макрос с именем ио()нрпр определен, то функция будет увеличивать передаваемое в аргументе число до ближайшего четного. Ниже приводится код тела функции 1пге(): 1пгедег гипсг1оп 1гие(1) / 2 в=к*в 1В (1 .Ва. К) Енеп 1гие = 1 140 Часть (!. Использование Сборного Компилятора е1ве №асаеа нооирор 1гпе = 1 + 1 №е1ве 1гпе 1 — 1 №епа1г епа 1г епа гппсп1оп 1гпе Следующая командная строка скомпилирует эту программу в исполняемый файл ечепир: 3 д77 -гггее-гоге ечеппр.Р -о.ечеппр Нет необходимости в программах свободной формы специально применять такое форматиование, которое учитывает использование препроцессора.

Поскольку препроцессор убирает директивы и передает на компиляцию только результирующий код, следующая программа также имеет вполне приемлемый код: С вааег.Р с №аег1пе ВЕЧЕИ 7 №аег1пе И1ИЕ 9 с ргодгвв еааег 1вшп = ВЕЧЕИ + Итнв иг1ее(*,10) 1вап 10 Еогвве(15) епа ргодгев аааег Создание и использование статической библиотеки Статическая библиотека объектных модулей создается компиляцией исходного кода на языке Рог(гол в файлы . о и последующим применением утилиты аг для сохранения этих файлов в архиве.

Архив — это другое название статической библиотеки. В следующем примере демонстрируется построение объектной библиотеки. В ее состав входят две отдельные функции, вызываемые одной основной программой. Первая функция 1швхашшп() находится в файле аввхавпв. й„она возвращает наибольшее нз трех передаваемых ей целых чисел: с 1швх1вшп. г с 1ИТЕОЕЕ РПИСТХОИ 1ввХ1впв(1,з,х) 1гег = 1Р () .де. 1гее) 1гег = ( 1Р (3 .де.

1гег) )гет. = И 1ввх1пшв = 1гег еепчзви ЕИР РОИСттси 1швх1вшп Глава Ч. Компиляция программ на языке Еог(гап 141 Вторая функция 1шйпщвща() находится в файле 1ш1ппшпш. Е, она довольно похожа на первую, но только возвращает наименьшее из передаваемых ей трех целых чисел; С 1в1п1ииаа. 1 с хитеаен Ромстхом 1в1п1впв(1,2,)г) 1хес = 1 ХР (3 .10. 1хеа) 1хес = 1 ХР (1 .ХС. 1хес) 1хес = А 1в1п1вша 1хее ВЕ'Л)ВИ ЕМО РПИСтХОМ лв1п1вша Приведенные ниже три команды компилируют эти две функции и сохраняют полученные из них объектные модули в библиотеке с именем 11Ьшйша.

а: 5 077 -с 1в1п1впв.к -о 1в1п1вшв.о 1 077 -с 1вах1вив.к -о 1вах1вшв.о 1 ак -х 11Ьв1ва.а 1вах1вшв.о 1в1п1вшв.о Опция -с команды д77 указывает компилятору выполнить комПИЛяцИЮ исхОдного файла в обьектный, не задействуя затем компоновщик. Использование утилиты ах с опцией -1 создаст новую библиотеку с именем 11Ьшхша. а, если такой библнотеки еще не существует. Если библиотека уже есть, то входящие в ее состав ебьехтные файлы будут заменены новыми версиями файлов, указанных в командной строке. Далее приведенная программа вызывает две функции, сохраненные в библиотеке, н выводит их результат: С в1гааах. л с РНООВ7ГМ М1ИМАХ ИН1тв(*,10) 'мах1вав=', 1вахлвша(10,20,30) инхте(*,10) 'М1п1авпа=', 1вап1ишв(10,20,30) 10 Ровмат(А,15) ЕМО РНОаВАМ МХИМАХ Программа может быть откомпилирована и скомпонована статически с функцилмн хранящимися в библиотеке 11Ьшхша.

а СЛеДУющей командой; 5 077 в1пвах. и 11Ьв1ва. а -о в1пвах Компилятор распознает шйшаах. й как исходный файл на языке Рог(гол. Этот файн компилируется в объектный код. Затем компилятор компонует программу, Сообщая компоновщику имя библиотеки 11.Ьшфша.а. Создание разделяемой библиотеки Создание разделяемой библиотеки очень похоже на созданию статической. Только ебьектные файлы, сохраняемые в разделяемой библиотеке, должны компилироватьсл с опцией -йр10 или -РРХС. Необходимо, чтобы код объектных модулей мог ди- 142 Часть!1.

Характеристики

Тип файла
DJVU-файл
Размер
6,08 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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