GCC - The Complete Reference (537669), страница 54
Текст из файла (страница 54)
Выводит только те символы, которые определены как внешние (ех(егпа! ). — ахсесп-оп1у Тс же, что и г -восвас. Утилита шв может использоваться для вывода списка всех символических имен, определенных в объектном модуле, а также имеющиеся в объектном модуле ссылки на внешние символы. Эта утилита применяется как к отдельным объектным файлам, так и к модулям статических или разделяемых объектных библиотек. Если в командной строке не указано имя выходного файла, то по умолчанию ему присваивается имя а. оцс.
Используя различные опции командной строки, можно применять разные варианты сортировки выходного списка символов — по адресам, по размеру адресуемых объектов или по именам символов. Также можно выбрать один из возможных форматов выводимого списка. Выводимые имена символов могут быть преобразованы из сокращенной формы в полную ([(ещапд!ед зугпЬо! пагпез) и представлены в выходном списке в том же виде, в котором они были определены в исходном коде. Следующий пример команды выводит список имен объектных модулей статической библиотеки 11Ьс . а вместе со всеми программными символами, определенными в каждом модуле, и всеми внешними символическими ссылками, к которым имеются обращения из каждого модуля: 244 Часть ВК Внутренняя структура и окружение Овя взвив При выводе использует указанный формат представления буквенных символов.
Допустимыми значениями поля ьвс могут быть ьеа, еуеч и рое1х. По умолчанию применяется --когааг ьва. То же, что и --ехьегп-оп1у. --вогвас=вас Выводит список опций утилиты шв и завершает на этом ее работу. То же, что и опция --Ье1р. Выводит список опций утилиты па и завершает на этом ее работу. То же, что и опция -Ь. --Ье1р То же, что и опция --11пе-ппзфеге.
Использует отладочную информацию, содержащуюся в объектном файле, для определения имени файла и номера строки, где содержится объявление программного символа в исходном коде. --11пе-ппаЬеге То же, что и --пппег1с-вогг. Отключает сортировку. В выходном листинге символы выводятся в том же порядке, в котором программа их находит в объектном файле. --по-еогс Включает числовую сортировку символов по их адресам. То же, что и --рг1пь-111е-пюае. То же, что и - -ло- еогь.
То же, что и --когеаь рое1х. То же, что и --когааь рое1х. — пшхег1с-еогь -о --роггаЬ111ьу --рг1пг-агеар При выводе списка символов из модуля статической библиотеки в вывод включается информация из списка (индекса)модулей библиотеки вместе с любой другой имеющейся информацией об обрабатываемом модуле. То жв, что и --гечегее-еогг. Указывает систему счисления для представления числовых палей при выводе значений символов. Поле ьаее может иметь значение а дпя применения десятичной системы, о — для восьмеричной, или х — для шестнадцатиричной. --габ1х Ьаее Применяет обратный порядок сортировки списка, Как при алфавитной, так и при числовой сортировке.
— гечегее-еогс То же, что и --рг1пг-агаар. Упорядочивает выводимый список символических имен в соответствии с размером адресуемых ими объектов. То же, что и --гаа1х. --в1хе-еогг Ьаее --гагоес=ьгопапе Поле ькнпапе указывает формат объектного файла в случае, когда он отличается от формата, применяемого в текущей системе. Чтобы получить список доступных форматов, следует выполнить команду: оЬн1нглр Ц То же, что и --ипде11пед-оп1у. Выводит только те символы, на которые имеются ссылки, но они не определены в текущем файле. --ппдеввпед-оп1у То же, что и --чеге1оп, Выводит информацию о версии утилиты ша и завершает на этом ее работу.
-чеге1оп — рг1пг-111е-паве Выводит имя исходного файла для каждого символа, несмотря на то, что имя исходного файла уже может стоять в заголовке списка программных символов. Глава 12. Использование библиотек и способы компоновки 245 Удаление неиспользуемой информации из объектных файлов Ф вег1р ша1п.о 11Ьд1ош.а Эта утилита после обработки заменяет имеющиеся файлы их новыми версиями с удаленной отладочной информацией. Вам еще может понадобиться необработанвзя версия, содержащая необходимую для отладки информацию. В таком случае необходимо или сохранить файлы перед их обработкой в другом каталоге, илн использовать опцию -о для вывода обрезанного объектного кода в файл с другим именем. В таблице 12.5 перечислены опции командной строки утилиты аст1р.
Несколько опций имеют поле Ьлстпаша, которое указывает формат объектного кода. Его необходимо указгявать тогда, когда предназначаемый для обработки файл имеет формат объектного кода другой машины, те. отличается от применяемого в текущей системе формата. Для того, чтобы получить список доступных значений ьгсгтзаша, следует выполнить команду оЬ5 бшар Таблица 12.5. Опции утилиты 11г)р Описании Удаляет все символы, не объявленные как глобальные.
мывсагд-а11 -д1всагд-1ова1е Удаляет сгенерированные компилятором локальные символы. Их имена обычно начинаются с буквы "ь" или точки. То же, что и опция --гагдег. То же, что и --есг1р-деЬод, "т Ьудлшла Выводит список опций утилиты егг1р и завершает на этом ее работу. Выводит список опций утилиты егг1р и на этом завершает ее работу.
То же, что и опция --торос-сагдес. — Ьа1р -1 Ьвтлаше — 1лрог-сагдас=ьгдоалм Воспринимает входные файлы в указанном формате объектного кода. Поле Ьддлаша содержит имя формата. См. также --оосрос-гагдег и --сагдег. То же, что и опция --Ваар-аушьо1. -к лава — Хаар- вуаъо1=лаям КопиРует в выходной файл только символы с именами, указанными в поле пате. Для сохранения более одного имени зта опция может использоваться в одной команде несколько раз. То же, что и опция --асг1р-вушЬо1. Тоже,что и --оосрог-сагдег.
-В аааа -о Ьгдсаше Утилита встзр убирает отладочную информацию из объектных файлов, перечисленных в командной строке. Она способна обрабатывать как отдельные вырабатываемые компилятором объектные файлы (с расширением . о), так и модули статической или разделяелюй библиотеки. В зависимости от количества отладочной информации, обработка объектного файла утилитой встхр может существенно уменьшить его размер. Следующий пример командь1 удаляет всю отладочную информацию из объектного файла шазп.о и из всех объектных модулей библиотеки 11Ьд1ош. а: 246 Часть |И.
Внутренняя структура и окружение Оиятке Олеевнае По этой опции, утилита егг1р выводит объектный код а нааый файл с именем е11епатае вместо перезаписи обрабатываемого аходного файла, Команда с этой опцией может обработать только один файл. Заменяет назначенный для обработки объектный файл его обрезанной версией (т.е. без отладочной инФормации), имеющей формат объектного кода с именем ЬЕдпепе. См. также --1прпг-кагеес и — гагеес.
-о Е11епате — опсрпс-гагеес ьедпепе Тоже, что и опция --ргееегче-дагее. Выходной файл после обработки утилитой будет иметь те же атрибуты времени, что и начальный объектный файл до обработки. — ргееегче-даьее То же, что и опция --гепоче-еесс1ол. -К пепе — геточе-пес с 1оп=папе Удаляет из объектных файлов раздел с укаэанным именем пепе. Для удаления более одного раздела зта опция может использоваться з одной команде несколько раз. То же, что и опция --есг1р-е11. То же, что и --егг1р-деьпе. Удаляет зсе символы, включая таске и необходимую для компоновки информацию о перемещении адресов.
--егг1р-е11 Удаляет только те символы, которые вставлены компилятором для обеспечения отладки кода. --есг1р-деЬпс Удаляет символ с именем, указанным а поле пете. Как и прочие опции обрезки, зта опция может использоваться е одной команде несколько раз. -есг1р-еупъо1 =пате Удаляет есе символы, которые не используются для перемещения кода. --егг1р-шшеедед Применяет указанный формат объектного кода как для считывания входных файлов, так и для вывода.
Поле ЬЕдпепе содержит имя формата. См, также опции --1прпк-сегееь и --оигрпь-гагеес. --Сегяег=ЬЕдпапе То же, что и опция --чегЬове. Выводит информацию о версии утилиты екг1р и завершает на этом ее работу. --чегЬове Тоже,что и опция --деесегд-а11. Тоже, что и --д1есегд-1ссатв. Вывод списка зависимостей, связанных с разделяемыми библиотеками Утилита 1дд выводит список всех зависимостей, связанных с разделяемыми библиотеками. Она способна считывать объектные модули как в двоичных выполняемых файлах, так и в разделяемых объектных библиотеках. Имена файлов для обработки передаются утилите в командной строке.
Например, следующая команда выдаст список разделяемых библиотек, которые используются консольной программой командной оболочки Ьааут. (Она, в частности, применяется в системах Ыпих.) Глава 12. использование библиотек и способы компоновки 247 $1оа /Ь1п/Ьавп 11ЬСекасар. во. 2 => /11Ы11ЬСекасар. во. 2 (Ох4 0027000) 11ЬЙ1. во. 2 => /11Ь/11Ь61. во.
2 (Ох4002ЬООО) 11Ьс. во. б => /11Ы11Ьс. во. б (Ох4002ЙООО) /11Ы16-11пих. во. 2 => /11Ы1а-11ппх. во. 2 (Ох40000000) Каждая строка вывода начинается с имени разделяемой библиотеки. Имя библиотеки представлено в том же виде, в котором оно присутствует в программе. Второе имя — имя библиотеки, загружаемой в действительности. Оно включает в себя путь расположения на диске файла, из которого загружается используемая библиотека.
В конце строки выводится начальный адрес, с которого библиотека загружена в измять машины. Теперь вернемся к примеру. Программа оболочки ЬавЬ при запуске использует функции библиотеки 11Ьсехтсар. во для вывода текста на экран. Программа также вызывает функции разделяемой библиотеки 11Ьб1. во. Библиотека 11Ьс. во используется многими программами — это библиотека стандартных функций програл(м, написанных на языке С.