GCC - The Complete Reference (537669), страница 35
Текст из файла (страница 35)
во: 3 доз --ва1п=вауне11о вауие11о.дача 11ьвау.во -о вь11ььа11о Содержимое библиотеки не компонуется в исполнимую машинную програму в)т11ЬЬв11о. В программу только помещаются инструкции, необходимые для загр)оки во время выполнения требуемых объектных модулей из разделяемой библиопхя 11Ьвау. во. Также необходимо, чтобы используемая разделяемая библиотека виодилась в соответсвующем расположении, разрешимом для ее поиска запущенной иа выполнение программой.
Подробности о размещении динамических библиотехчитайте в главе!2. Создание 3ача-архива .айаг Язык программирования лича имеет особый род архивов для хранения классов в формате байтового кода интерпретатора. Эти архивы кода известны какуаг-файлы. Ояи имеют тот же формат, что и г1р-архивы, но в них есть особый раздел, называеиый манифестом (гпап](еа). Манифест содержит описание классов, содержащихся вархиве .
айаг. Все внутренние определения в языке лага основаны на именах классов, Поэтому для программы на языке Уага достаточно найти нужный архив . заг 1 бО Часть (). Использование Сборного Компилятора (или несколько архивов) в разрешимом для поиска расположении и просмотреть манифестные разделы на наличие требуемых классов. Здесь мы продолжаем использовать те же примеры исходного кола, что и в предыдущих разделах.
Для создания )аг-файла вначале следует скомпилировать исходные файлы в класы на байт-коде интерпретатора Л'М: а доз -с юогйсас.3ауа вау.3ауа Для сборки архива . айаг применяется утилита 1аг с опцией с. Флаг г указывает, что следующий за опцией аргумент определяет имя для создаваемого)аг-файла. Остальная часть команды составлена из имен файлов классов, предназначенных для помещения в создаваемый архив.
Следующая команда создает)аг-файл 11Ьвау. 5 ах, содержащий два класса и манифест: 3 Заг ег 11Ьеау. айаг Иогйсас.с1аве Вау.с1аев Классы, сохраненные в)аг-файле, не только могут загружаться виоунуаоьноймошиной зауа при выполнении в ней программы. Их также можно компилировать в объектные файлы, которые затем могут использоваться компоновщиком при создании исполнимых программ в двоичном машинном коде. Следующий пример команды создает исполняемый файл заг11ЬЬе11о, при этом происходит компиляция я компоновка классов из)аг-файла, который находится в текущем каталоге: я дс3 --ва1п=вауне11о 1тьвау.айаг вауне11о.~ауа -о 5аг11ьье11о Утилиты компилятора 3ача Кроме компилятора дс5 дистрибутив ОСС содержит несколько утилит для обработки исходных и объектных файлов )ага.
Утилита дХ~ является вира(уольной машиной баит (3ауа 'йпца! Маяйше, )УМ). Это— программа-интерпретатор, которая выполняет байтовый код, находящийся в файлах классов )ага. Командная строка для запуска интерпретатора содержит имя назначаемого к выполнению класса (файла с суффиксом . с1авв или класса из)аг-файла). Например, следующая пограмма на языке /ага выводит на стандартное устройство вывода все передаваемые ей параметры командной строки: /* Ьявепреяопа.~ауа */ рпЬ11с с1аев Ьявссре1опв риЬ)яе ееас1с уояд аа1п(аег1пд агд()) ( яог(япс 1=0( гтагд.1епдсиг 1++) ( Вуесеа.оие.рг1пе1п(агд[1))г ) ) ) Эту программу можно скомпилировать в байтовый код и запустить на выполнение в интерпретаторе двумя командами: Глава В.
Компиляция программ на языке 4ача 1 6 1 д дс5 -С Ь1весрс1опв.5ача 3 д15 ьдвсоре1опв Любые аргументы командной строки, следующие сразу после его имени, передаются запускаемому классу. Класс ь1всоре1опв последовательно выводит на стандартное устройство вывода все переданные ему аргументы. То есть результат выполнения этого класса из командной строки выглядит примерно так: 3 д15 ьдвсоредопв арр1е ьпссек --ье1р врр1е Ьцссек --Ьедр 2аблица 8.2.
Опции, поддерживаемые утилитой у) Устанавливает системную переменную леве с указанным значением таяне. Если значение не указано, то переменная с таким именем будет содержать строку нулевой длины. Выводит этот список опций и на этом завершает программу. Имя, указанное в командной строке воспринимается как имя )вг-файла, вместо имени файла класса. Назначает начальный размер (в байтах) выделяемой динамической памяти [иначе говоря, "кучи"). Ограничивает наибольший размер выделяемой динамической памяти (" кучи" ). Выводит версию утилиты д15 и завершает ее работу.
-впаяв( чазов) — Ьв1р -5вт -вх лшкввк — 1гекв1оп Опция 3ак позволяет выполнить класс, находящийся в библиотеке . 3 ах. При этом назначаемый к выполнению )аг-файл должен содержать в своем манифесте ятрибут ма1п-с1авв, имеющий значением имя выполнимого главного класса. Указываемый этим атрибутом класс в свою очередь должет содержать рцЫ)с-метод жа1п ( ) . К примеру у нас есть библиотека вауЬе11о. зал, содержащая класс дауне11о.с1ава с методом гпадп(), и в манифесте этого)аг-файла содержится строка: Ив1п-С1авв: Зауие11о В этом случае мы можем запустить программу из файла вауЬе11о. й авз Д д15 -5ак вауье11о.5ак айаг Файл типа . 5 ах (сокращение от "Зача агой(че") содержит набор файлов-классов 5ата в таком формате, в котором они могут непосредственно считываться и выполняться виртуальной машиной уача. Для создания, просмотра и модификации таких акга«фф и В таблице 8.2 приводится список опций, которые могут использоваться в командной строке д15.
162 Честь и. Использование Сборного Компилятора файлов и служит утилита 5аг. Опции командной строки, поддерживаемые этой ути- литой, приведены в таблице 8.3. Таблица 8,3 Опции командной строки, поддерживаемые утилитой )аг Считывает список файлов, укаэанный сс стандартного устройства ввода. Создает новый файл .
5вг. Добавляет в архив укаэанный файл 111в из каталога а1г. Указывает пропускать файлы иэ каталога азг. имв 111в, которое следует за опцией -е, считается именем ~аг-файла. Выводит этот список опций и краткую информацию. Указывает файл, содержащий информацию для манифеста, включаемого в файл .звг. Ртквз ст создания манифеста. Создает архив . 5вк без использования сжатия, Выводит список содержимого архива . 5 эх. Добавляет файлы в существующий архив . 5вк. Выводит на стандартное устройство вывода подробное описание выполняемых действий.
Тс же, что и --чек эзоп. -С а1г 112в -а азг -Е 111в — Ьв1р -и 111в -о -ч Выводит номер версии утилиты 5 вг. Извлекает файлы из архива. — чвкв1оп ь 5аг счб ввуне11о.5аг ч.с1авв Для создания того же архива )ауа-классов, но содержащего в качестве манифеста информацию из текстового файла Ье11о.вгап1бевс, используется следующая команда: Е 5вг счбв ваупе11о.
5аг 'пе11о.ввп1Еевс *. с1ввв Имя лля )аг-файла и имя файла-манифеста должны следовать в том же порядке, что и опции б и вь Следующая команда отличается от предыдущей только тем, что имена этих файлов поставлены в обратном порядке: э заг счже ье11о.ввпзеевс вауье11о.5аг *.с1авв При раздельном формате указания опций (с начальными дефисами) будет получен тот же результат: э звг -с -ч -е вауье11о.5вг -в ье11о.жап1еевс Следующая команда выведет список содержимого архива ваупе11о. 5 аг: 3 5вг сче веуье11о.5вг Опции командной строки утилиты 5аг весьма сходны с опциями 0)ч)!Х-архиватора еаг.
Буквы опций могут указываться вместе в начале командной строки без предварительного дефиса. Например, следующая команда создает 1аг-архив ваутте11о. з аг, который содержит все файлы-классы зауа из текущего каталога: Глава 8. Компиляция программ на языке дача 163 Содержимым .
бак файла может быть просто набор файлов, а может быть и целое дерево каталогов с файлами. Мани(бест архива всегда помещается в файле со станлгртным именем иапукит. 1иу, который находится в каталоге архива мити-пгп. дс~Ь !аблица 8.4. Опции командной строки, поддв живаемые утилитой Вс)й Вставляет комментарий саха в реализацию класса на языке С+-~. Эта опция игнорируется при указании опции — зпь.
-авв саха Вставляет комментарий в заголовок определения класса на языке С++. Игнорируется при указании опции -Зпг. Замещает системную переменную сьаввратв. Назначает путь рась к каталогу дпя поиска файлов-классов изча. -арраса сахс -ьооссзааарасл рась -стааарась расл Назначает путь рась к каталогу дпя поиска файлов-классое чача.
Указывает имя каталога аххассосу дпя выходных файлов. — Стаззрата раСЬ -В сцсассо у Вставляет указанный сахс е заголовок класса С++ е качестве определения дпя атрибута объявления ессапе. игнорируется при указании опции -зял. -Стгапе сахс Выводит на стандартное устройство вывода этот список опций. -ы тр добавляет укаэанное значение алхассосу к списку сьаввратв.
Подавляет обычный вывод программы и распечатывает нв стандартное устройство вывода все зависимости. -тсцсаскосу Выводит все зависимости. Подавляет обычный вывод программы и распечатывает нв стандартное устройство вывода только те зависимости, которые не назначены стандартными определениями применяемой системы. Направляет на стандартное устройство вывода только те зависимости, которые не назначены стандартными определениями применяемой системы. Назначает имя дпя выходного Файла. Если команда вырабатывает несколько файлов, то эта опция вызывает сообщение об ошибке.