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

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

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

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

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

Таблица 12.2 содержит описание модифицирующих опций. Таблица 12Л. Опции утилиты аг, назначающие действия для выполнения Овеяв Ов все иве а Удаляет из архива модули, указанные как оьувсШзе. При ислользовани модификатора ж выводится имя каждого удаляемого модуля. Глава 12. Использование библиотек и способы компоновки 235 Оппспппа ПеРемещает модули внутри архива. По умолчанию все модули, имена которых указаны как оЬ1вссе11в, переносятся в конец аРхива Юля пеРемещения указанных модулей в другие расположения используются модификаторы в, ь и 1. Выводит на стандартный выход содержимое модулей оьувосе11в в двоичном представлении.

Если не указано ни одного оьтвссЕ11в, выводятся все модули архива Быстрое присоединение модулей, указанных как оьэвссЕ11в, в конец библиотеки, беэ проверки возможности их перемещения. До использования библиотеки необходимо ее обработать утилитой хвл1хь. Размещает в архиве все модули с именами ль1всс111в. В случае присутствия в архиве модуля с тем же именем, он заменяется новым. Если укаэанный в команде архив не существует, то он создается.

Новые модули по умолчанию помещаются в конец архива. Модификаторами а, Ь или 1 можно назначить точное положение для новых модулей. Выводит список модулей, содержащихся в файле аРхива. При использовании модификатора ч выводятся артибуты: время последнего изменения, имя владельца, имя группы и размер каждого модуля. Если не укаэанны имена модулей опувлсЕ11в, то выводится полный список всего содержимого архива. Извлекает иэ архива модули с именами оьувссЕ11в в отдельные файлы. Если ни один модуль оьувсее11в не указан, то извлекаются все объектные файлы.

Таблица 12.2. Опции утилиты аг, модифицирующие выпопняемые действия Оппсаппе При добавлении в архив новых объектных файлов, располагает их сразу после указанного в поле рлвзс1олллвв объектного модуля библиотеки. При добавлении в архив новых обьектных файлов, располагает их непосредственно пеРед указанным в рлв1а1сллвтв обьектным модулем библиотеки. То же, что и 1. При необходимости создает новый архив. Новый аРхив, когда он нужен, создается всегда, но использование этой опции подавляет вывод предупреждения.

Сокращает имена объектных файлов в архиве. Обычно длина имен объектных файлов не ограничена. Сокращение имен бывает необходимо для обеспечения совместимости с некоторыми системами. При добавлении в архив новых обьектных файлов, располагает их непосредственно пеРед указанным в ров1схоллвлв обьектным модулем библиотеки. То же, что и ь. Этот модификатор использует параметр сонлс как переключатель между файлами с именем оьувссе11в, когда в архиве их больше одного.

При извлечении файлов иэ архива, сохраняет существующие атрибуты даты и времени. Создает новый список содержимого архива, дюке если в архиве не происходит никаких изменений. Эта опцияможет использоваться отдельно в команде ах -в. Тот же резул~тат достигается использованием утилиты хнл1хь. Используется при добавлении файлов в архив. По опции н в библиотеку заносятся только новые версии обьектных модулей. Применяется совместно с опцией х. Режим вывода описаний, выводится дополнительная информация о ходе выполнения программы вх, Выводит номер версии утилиты и завершает работу.

236 Часть )й. Внутренняя структура и окружение Объектные файлы в динамических библиотеках Динамическая библиотека содержит объектные файлы, которые загружаются в память и компонуются с программой уже во время запуска и выполнения программы, В этом есть два преимущества: во-первых„малый размер исполняемых файлов; во-вторых, две программы и более могут исполъзовать объектные модули из одной динамической библиотеки одновременно (именно поэтому такие библиотеки и называются разделяемыми). Объектные файлы для динамической библиотеки несколько отличаются по формату от файлов, вырабатываемых для статической компоновки. Эти два типа объектных файлов принципиально отличаются тем, что в генерируемом компилятором коде применяются различные способы внутренней адресации.

Оболочка компоновщика При выполнении программы, написанной на объектно-ориентированном языке, таком как С++, до запуска главной подпрограммы требуется выполнение статических процедур-конструкторов. Не все программы-компоновщики способны выполнять необходимые для этого действия. Поэтому к процессу компоновки добавлена оболочка, верхний уровень (йонг епд) компоновщика, он имеет имя со11есе2.

Почти на всех системах компилятор дсс задействует утилиту со11есе2, которая принимает на себя всю ответственность за компоновку программы. Процесс со11есс2 определяет набор статических конструкторов, выполнение которых требуется перед запуском главной процедуры вырабатываемой программы. Для надеж- НОГО ВЫПОЛНЕНИЯ ЭТИХ ПрОцЕдур-КОНСтруКтОрОВ Со11еСЕ2 ГЕНЕрИруЕт ОСОбуЮ таблицу конструкторов и сохраняет ее во временном исходном файле с расширением .с, Затем со11есе2 компилирует этот временный файл, и включает полученный из него объектный код в компонуемую программу. В начале основной процедуры, которая имеет имя гаа1п (), помещается вызов функции кае1п(), выполняющей вызовы всех необходимых статические конструкторов.

Программа со11есе2 запускается точно так же, как утилита 1гт. Она принимает весь набор аргументов, предназначенных компоновщику, и передает их утилите 16, которая и выполняет основную компоновку. Может оказаться, что программу необходимо компоновать дважлы. Первый раз для определения имен необходимых статических конструкторов (их список будет выдан на выходе компоновщика). И, затем, повторно — уже для получения скомпонованной машинной программы. Размещение библиотек Для правильной компоновки, программа-компоновщик должна быть способной находить библиотеки, необходимые для разрешения внешних ссылок.

Если программа скомпонована со статической библиотекой, то все объектные модули собраны вместе и находятся в одном выполнимом файле. Такая програлчма полностью самостоятельна и переносима, она может выполняться в любой совмес- Глава 12. Использование библиотек и способы компоновки 237 тимой системе.

Даже в том случае, если исходная статическая библиотека потеряна. Разделяемые же библиотеки, напротив, должны быть доступными и во время компоновки программы и всякий раз при запуске такой программы на выполнение. Поиск библиотек во время компоновки Когда при компоновке требуется найти библиотеку, программа-компоновщик проводит поиск в каталогах, определенных соответствующим списком путей расположения. Пути для поиска библиотек назначаются; во-первых, при конфигурировании утилиты 1б во время ее компиляции; во-вторых, они зависят от режима эмуляции; и, в-третьих, могут быть заданы н командной строке. Чаще всего системные библиотеки находятся в каталогах /11Ь и /ивх/11Ь, поэтому два этих каталога просматриваются автолгатическн.

Другие каталоги задаются одной или несколькими опциями -ь в командной строке. Например, по следующей команде компоновщик будет просматривать текущий каталог и каталог с именем /Ьоше/йкеб/11Ь для поиска любой библиотеки, не обнаруженной в пути поиска по умолчанию: 3 дсс -Ь. -Ыпсше/Геев/11Ь ркод.о Компоновщик сначала проводит поиск разделяемых библиотек, а затем уже статических. По следующей команде будет происходить поиск в каждом каталоге нз действующего списка путей сначала библиотеки с именем 11Ьш11с. во, а затем— 11Ьш11С, а: ь дсс -1ш11Е ркод.о Поиск библиотек может быть отменен указанием в командной строке точных имен библиотек, включающих их путь расположения. В следующем примере используется библиотека 11Ь2 з .

а из текущего каталога и библиотека 11ьтп11с . во, которая находится в каталоге /Ьоше/брей/11Ь/: 3 дсс 11Ьбб.а /поше/дкед/11Ь/11Ьш11е.во ркод.о Поиск библиотек во время выполнения программ Программа„скомпонованная с использонанием разделяемых библиотек, должна находить необходимые ей разделяемые библиотеки но время своего запуска и выполнения. Поиск библиотек происходит по их именам и почти нсегда без учета пути расположения. Поэтому существует возможность, что программа, скомпонованная с одной копией библиотеки, при запуске будет находить и использовать другую ее копию.

Это может вызвать проблемы при переходе от одной версии библиотеки к другой ее версии без обновления программы. По этой причине имена многих библиотек содержат номер версии (например, 11ьш. во. б, или 11ьис11-2. 2. 4. во). Во время загрузки программы и ее подготовки к запуску, а также во время выполнения программы, все необходимые разделяемые библиотеки могут быть обнаружены последовательным поиском в следующих местах: 238 Часть !1!. Внутренняя структура и окружение ° Каждый из каталогов списка переменной окружения ьп ыВНАНУ РАТН. (В системах () М!Х имена каталогов в этом списке разделяются двоеточием ": ".) ° Список библиотек в файле /есс/16.

во. сасЬе, этот список поддерживается с помощью утилиты 1йсопййд. ° Каталог /11Ь, ° Каталог /цвк/11Ь. Если нужно узнать, какие библиотеки загружены и используются определенным приложением, то можно использовать утилиту 1(1с). Эта утилита будет подробно рассмотрена в этой главе. Другая переменная среды окружения, Ь)З РНЕПОАО может содержать список имен предварительно загружаемых разделяемых библиотек (имена библиотек в этом списке отделяются друг от друга пробелами, символами табуляции или символами перевода строки). Предварительно загружаемые библиотеки — это библиотеки, которые загружаются в память до поиска любых других библиотек.

При этом имеется возможность замещения тех функций, которые обычно используютсн программами из предварительно загруженных библиотек. Из соображений безопасности этой методики существует ряд ограничений, которые применяются ло отношению к программам, использующим веецЫ. Загрузка функций из разделяемой библиотеки Для загрузки и выполнения программой функции из разделяемой библиотеки не требуется компоновка тела этой функции в саму программу. Все что нужно сделать для выполнения такой функции, это — загрузить в память разделяемую библиотеку, и затем вызывать из нее нужную функцию по имени, В следующем примере рассматриваются две простые функции разделяемой библиотеки, программа динамически загружает библиотеку и выполняет каждую из функций. Обе функции разделяемой библиотеки выводят строки на стандартное устройство вывода.

Вывод этих строк показывает выполнение функций. Первая функция вауЬе11о ( ) объявляет и выводит внутреннюю строку "Нейо !гога а 1оа()е(! Валс!!оп" и выводит ее на стандартное устройство вывода: /* ваупе11о.с */ $1пс1игте <всгтго.п> чоьо ваупе11о() ( ркьпее("не11о кксв а 1оагтегт еипссьопхп")/ ) Вторая функция выводит на стандартное устройство вывода строку, передаваемую ей в качестве аргумента: /* ваувоаесЫпд.с */ Евпс1иое <веоьо.п> Глава 12. Использование библиотек и способы компоновки 239 чоЫ ваувошееиьпд(сЬаг «вегьпд) ( ргьпСЕ("з«в1п",вегзпд)з > Эти две функции компилируются как позиционно независимый код (т.е.

с динамически перемещаемой внутренней адресацией) и используются для создания раздсляемой библиотеки 11ЬвауЕп. во. Все это делается одной командой: 3 дсс -Ерьс -вЬаге(( вауЬе11о.с ваувошеспьпд.с -о 11ЬвауЕп.во Пример программы, которая будет использовать созданную динамическую библиотеку, использует четыре основные функции работы с разделяемыми библиотеками. Вызов б1ореп () загружает в память разделяемую библиотеку (если она еще не загружена) н возвращает идентификатор, используемый для адресации к функциям библиотеки.

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

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

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

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