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

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

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

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

Следующая команда доз использует опцию -с для создания файла не11оьгог1б. с1евв из исходного файла Не11оиог1й.ЗЕче: ь дсб -С -Иа11 Не11оног16.3еча В сочетании с -с опция -о недоступна, так что выходной файл .с1авв всегда будет иметь то же имя, что н входной файл . з аче. Класс не11оиог1б содержит необходимый методрцЫдс всае1с чоЫ ве1п(), это значит, что он может быть запущен на выполнение в среде виртуальной машины лага проекта Сз)ч'с) д11 из командной строки: Э д1з не11оиогза Вырабатываемый командой дс5 5ача-класс совместим с другими интерпретаторами /ага.

Ту же программу можно запустить в виртуальной машине лича, поставляемой корпорацией Яцп М1сгозуз)ешж $ Зача Не11оног1С Двоичный объектный файл из отдельного исходного файла на языке Зача Предлагаемый далее пример команды использует опцию -с для подавления компоновки и выработки объектного файла. Такой объектный файл не только можно скомпоновать в исполняемую программу, но также и сохранить в составе статической библиотеки для последующей компоновки.

ь дсэ -с Не11оног1с.эача Ло этой команде будет создан объектный файл не11оног1б. о, При необходимости можно назначить другое имя для выходного объектного файла, используя опцию -о; ь доз -с Не11оног16.зача -о ье11о.о Для компоновки объектного файла в машинную программу можно использовать все ту же команду до З. Файл Ье11о. о в объектном коде содержит определение класса Глава 8. компиляция программ иа языке дача 1 55 де11оног1б со статическим методом ша1п().

Поэтому имя класса должно быть указано в команде в качестве точки входа в программу: д де~ --ва1п=не11оисг1с йе11с.с -о Ье11о Необходимость подобного изменения имен объектных файлов возникает крайне редко. Мы построили этот пример так, чтобы нагляднее показать, что в опции — ва1п должно указываться имя класса, а не файла.

Преобразование байт-кода интерпретатора 1ача в машинную программу Можно использовать де б для компиляции байт-кода Л'М в самостоятельную выполняемую машиной программу. Указываемый в командной строке файл с суффиксом имени . с1ава при компиляции в машинный код воспринимается доз так же, шк и исходный файл с расширением .

зача. В следующем примере первая команда хеипилирует исходный файл в файл )ача-класса, а вторая команда компилирует файл гласса в самостоятельный исполняемый файл: 3 дс5 -С Ие11оног1с.дача 3 дс5 ие11оисг1с.с1аав -о ие11оисг16 Компиляция нескольких исходных файлов 3ача в запускаемую программу Для того, чтобы создать самостоятельный файл готовой к выполнению машинной программы из набора исходных файлов, следует скомпилировать каждый исходный файл и затем скомпоновать полученные объектные модули, указав компоновщику тот из них, который содержит метод ша1п(). Следующий простой пример содержит главную процедуру, использующую другой класс для построения строки и еще один класс для вывода этой строки.

Вот класс дауие11о, содержащий главную процедуру: /* Вауие11о.дача */ риъ1[с с1авв Вауне11о ( раЬ11с веае1с чо[с ва[п(аег1пд агд[)) юсгссас сас = пеи исгссас()г саС.асс("Не11с"]г сае.асс("сгпе1")г сае.асс("иог1с")/ вау вау = пеи вау(сас.совсгдпд()); вау.вреа)с(); ) ) МЕтОд абб ( ) КЛаССа ВГОгбеаС ПрИНИМаЕт СЛОВО И дОбаВЛяЕт ЕГО К КОНцу СтрОКИ, хеторая содержится во внутренней переменной. Метод содсг1пд( ) класса вгогс)сас возвращает строку-результат.

Эта строка передается методу вреак ( ) объекта клас- 1 56 Часть!!. Использование Сборного Компилятора са зау, который и выводит ее на дисплей. Далее приводится класс етогйсае, который добавляет к внутренней строке по одному слову при каждом вызове его метода айй(): /" ИогйСае */ риЬ11с с1авв Иогйсаг ( рг(чаев Ясггпд вег1пд = ""т риЬ1(с чоьй айй(ясг1пд пениогй) ( (Е(всгапд.1епдЕЬ() > О) вегьпд += " "т вег1пд += пендогйт ) риЬ1(с Зсг(пд Еояеггпд() ( гесигп(всг1пд)т ) ) Клаас Яау содержит внутреннюю строку буквенных символов и метод вреа)с ( ), используемый для вывода этой строки: /* Заз .5ача */ риЬ11с с1авв Зау ( рг1часв ясг1пд всг1пдт яау(ясг1пд всг) ( всг1пд = вегт ) риЬ11с чоай вреак() ( Яувсеп.оис.рг1пс1п(всг1пд)т ) ) Все три класса мокнут быть скомпилированы в выполнимый файл несколькими путями. Наиболее прямой способ состоит в том, чтобы сделать все одной командой: 3 доз --па1п=зауне11о зау.зача зауне11о.зача иогйсае.зача -о яауне11о По этой команде все три исходных файла будут скомпилированы в объектные, которь)е затем будут скомпонованы в один двоичный файл с именем яауяе11о.

Причем метод таа1п () класса яауне11о будет установлен в качестве точки входа в программу. Того же результата можно достичь выполнением последовательности команд для компиляции кажлого исходного файла в объектный и последующей их компоновки с указанием точки входа в программу: Я дсЗ -с ЯауНе11о.Зача 3 доз -с яау.чача Ф доз -с Иогйоас.эача Я дсэ --ва(п=яауне11о Зау.о ЯауНе11о.о Иогйсае.о -о ЯауНе11о Также возможно вначале странслировать исходный код программы в классы интерпретатора Л'М, и уж потом скомпилировать те же объектные модули из файлов классов. Затем скомпоновать двоичный файл из полученных объектных модулей с указанием головной процедуры в качестве точки входа в программу.

Глава 8. Компиляция программ на языке дача 1 57 Компиляция нескольких входных файлов интерпретатора 3ЧМ в машинный код Примеры исходных файлов предыдущего раздела могут быть скомпилированы в (ря файла классов интерпретатора Уача: Я де5 -с зауне11о. зача зау. 5ача иогйсае. зача Результатом выполнения этой команды будет набор файлов классов, который иежет быть запущен на выполнение в вартуальной машине 3ача.

Вот вариант команды )екего запуска нашей программы: 3 Зачв ЗауНе11о Скомпилировать все исходные файлы на языке Уача текущего каталога в классы интерпретатора можно и такой командой: Я дс3 -С *.5ача При компиляции и компоновке в двоичный код файлы классов на байт-коде Л'М метут восприниматься компилятором в качестве исходных. Далее приводятся две команды: первая транслирует исходные файлы в классы интерпретатора, а вторая кеилилирует эти классы в двоичную исполнимую программу с именем Зауие11о: 3 доз -с зауне11о. зача Зау. ~аче иогйСае.~ача Е де3 — ва(п=зауне11о зау.с1авв иогйсае.с1авв зауне11о.с1ввв -озаунв11о Команда доз определяет тип входного файла по суффиксу его имени.

Благодаря згому существует возможность смешивать входные файлы различных типов. Про(рвана дс5 способна компилировать и компоновать программы из комбинации исжх(вмх файлов, классов Л'М и файлов в объектном коде, что демонстрирует следувл(ий набор команд: Я доз -с зауне11о. заче -о зауне11о.

о Я де5 -С Иогйсас.эача Я де) --ва1п=аауне11о ЗауНе11о.о Зау.~ача Иогйсас.е1авв -о Звуие11о Выработка ассемблерного кода Приведенный далее класс при выполнении создает экземпляр самого себя и, испсльзуя метод вреа)г ( ), выдает строки на стандартное устройство вывода: /» дав»и. зача */ риЬ11е е1авв Юавп ( риЬ11с всаи1с чо1й ма(п(всг(пд агд()) ( юавп 5вп = пе»» аавп()г Звм.вреаи()( ) риЬ1(с чо1й вреах() ( Зувсеп.оис.рг1пс1п("аавт вреахв"]; ) ) 1 58 Честь и.

Использование Сборного Компилятора Этот класс представляет собой вполне законченное приложение. Он может быть скомпилирован в ассемблерный язык соответствующей целевой платформы следующей командой: Ф дсб -в давп.за га На выходе мы получим файл с ассемблерным кодом банга. в, который можно использовать для создания исполнимого двоичного файла.

Для той же цели в качестве входного может быть использован и файл класса Хата с байт-кодом интерпретатора Л'М. Первая из приведенных далее команд создает файл класса дава. с1авв из исходного Юввгв. звча, вторая — использует этот файл. с1авв лля генерирования программы на ассемблере давгв. в: Ф дсб -с давп.зача Ф дсб -8 даем.с1авв Создание статической библиотеки Статической библиотекой называется набор объектных файлов (с суффиксом .о), сохраняемых внутри одного файла, называемого слгатической библиотекой илн архивохг.

Компоновка программы с модулем библиотеки ничем не отличается от ее компоновки с отдельным объектным файлом. Используя ранее приведенные в этой главе примеры программ на языке lача, создадим объектные файлы тгокйсвс о и вау. о лля последующего их сохранения в статической библиотеке: Е де~ -с иохдсас.~ача вау.зача Для построения и обслуживания статических библиотек применяется утилита ат.

Для создания библиотеки из перечисленных в команде объектных файлов используется опция -к. В случае, когда указана уже существующая библиотека, новые модули добавляются в нее, а существующие заменяются при совпадении имен более свежими их версиями. Следующая команда создает библиотеку 11Ьвау.а из двух объектных файлов; в ак -т 11ьвау.а иокцсае.о аау.о Для использования объектных модулей библиотеки достаточно в командной стро- КЕ дед уКаэатЬ ИМя бнбЛОтЕКИ. СЛЕдуЮщая КОМаНда ИСПОЛЬЗуЕт бИбЛИОтЕКу 11ЬВау. в при создании готовой к запуску машинной программы 11ЬЬе11о: 3 доз --па1п=вауне11о вауне11о.амачи 11ьеау.а -о 11ьье11о Такое указание в командной строке имени библиотеки предполагает ее наличие в текущем каталоге.

Если библиотека находится в расположении, разрешимом для поиска библиотек командой доз, то для указания ее имени можно использовать опцию -1, как это показывает следующий пример команды: Ф дсб --паьп=аауНе11о Вауне11о.эачв -1вау -с 11ЬЬе11о Подробнее о расположении библиотек читайте в главе 12. Глава 8. Компиляция программ на языке дача 1 59 Создание разделяемой (динамической) библиотеки Разделяемая библиотека — это коллекция объектных файлов, хранимая внутри отдельного файла. Это примерно то же самое, что и статическая библиотека, только она имеетдва существенных отличиями.

Во-первых, объектные файлы в составе разделяемой (иначе называемой динамической) библиотеки подгружаются и компонуются к программе во время ее выполнения. Во-вторых, эти объектные файлы должны быть скомпилированы особым образом — так, чтобы их код мог выполняться без кодификации независимо от места его загрузки. Для создания пригодных для размещения в динамической библиотеке объектных файлов их следует компилировать сопдией -йр1с для выработки позиционно-независимога кода (гРогдбоп!пдерепдепт Соде" ). При этом для разрешения всех внутренних ссылок и вызовов используется относительная адресация, учитывающая возможность многократной выгрузки и загрузки кола во время выполнения программы.

В разделе будет рассматриваться пример, используюшиий ранее приведенные в этой главе исходные файлы. Следующая команда создает объектные файлы перемевпемого формата: 3 деэ -ЙР1о -с Иогйоав.дача Зау.эача Для компоновки объектных файлов в новую разделяемую библиотеку 11Ьвау. во хспользуется команда дед с опцией -вЬагвй; 3 доз -вцагей иогйсае.о вау.о -о 11Ьвау.во Теперь исходный файл вауНе11о. дача можно скомпилиРовать в машиннУю программу вЬ11ЬЬа11о, которая при выполнении использует объектные модули из разделяемой библиотеки 11Ьвау.

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

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

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

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