GCC - The Complete Reference (537669), страница 72
Текст из файла (страница 72)
внутренняя структура н окружение Кроме того, опцию -ЕР можно использовать совместно с опцией -м для подавления компиляции и записи строки зависимостей в файл: 3 дсс -М -Му дерепктв.Генг дегвпои.с Другим способом имя выходного файла можно указать с помо)цью переменной среды переепеестея 0<)тРпт, Опции -м и -Ем обнаружат отсутствие заголовочного файла и выведут об этом отчет. Лри необходимости подавления такого рода сообщений можно указать опцию -МР вместе с опциями -М и -ММ, которая сгенерирует фиктивнь<е ссылки для каждого заголовочного файла.
Опция -мт может использоваться совместно с опцией -м или -мм для указания имени каждого заголовочного файла, как показано в примере: Ф дсс -И -Ит храпя.о дегвпои.с храпя.ог дегвпои.с вггша)тег.п шоеЬас)т.Ь вноивггтпд.п Информация о самом компиляторе Существует несколько доступных опций, которые позволяют определить тип применяемого компилятора и параметры его конфигурации. Например, номер версии компилятора можно определить с помощью следующей команды: 4 дсс -оишрчегвтоп Для определения целевой машины, т.е, типа того компьютера, для которого компилятор создает объектные файлы, выполните следующую команду: Ф дсс -сишршасЬ1пе Отчет о времени компиляции Для генерации листинга времени, затраченного на отдельных этапах компиляции, используется опция -гс1ше-герогс.
Эта опция в основном предназначена для разработчиков компиляторов, тем не менее, ее можно использоватьдля определения относительной сложности различных программ. Результат компиляции при использовании этой опции выглядит следующим образом: Ехесиг1оп Е1шев (весопйв) дагЬаде со11есегоп : 1.13 11те апа1увтв О.О1 ргергосеввхпд О.4З 1ехтса1 апа1ув1в : 0.38 рагвег 2.72 раса 1 0.02 чагсопве 0.05 тпгедгае1оп О.оз 1оса1 а11ос 0.01 дзоЬа1 а11ос гсвг ое сошрттагтоп тотаь 4.
84 <2ЗЪ) ив. < ох) ив- ( 9Ы ивг ( втт) ивг (56Ы ивг ( ОЫ ивг ( 1Ы ивг ( 1Ы ивг ( ОЫ ивг ( ОЫ ивг ( Отт) ивг 0.00 ( ОЕ) О.оо < ох) о.оа <24х) 0.10 <29Ы 0.14 <41%) 0.00 ( ОЫ 0.00 ( ОЫ О.О1 < Зтт) 0.00 ( ОЪ) 0.00 ( ОЫ о.о1 ( зЫ О.З4 вув 0.50 вув 0.00 вув вув О.ОО вув З.ОО вув 0.00 вув 0.50 вув 0,00 вув 0.00 вув 0.00 вув о.оо 5.00 <1ОЫ иа11 ( ОЫ иа11 <2оЫ иазз < ОХ) иа11 (бои иа11 ( ОЫ иа11 (10Ъ) иа11 < ОХ) иа11 ( ОЫ иа11 ( ОЫ иа11 ( Отт) иа11 глава тв. выход компилятора 323 В приведенном листинге значения показаны в секундах и в процентном отношении продолжительности каждого этапа по отношению к общей продолжительности компиляции.
Время иве — это время, по~раченное на выполнение кода компилятора. Время вув соответствует времени, затраченному на выполнения системных вызовов (таких как ввод и вывод), а время ма11 представляет собой фактические затРаты времени. Ключи подпроцессов Программа дсс является оболочкой (верхним уровнем) для других программ, таких как компилятор отдельного языка, ассдмблер и компоновщик. Имена подпроцессов и передаваемые им опции настраиваются и устанавливаются во время конфигурирования и компиляции дсс. Для опрелеления спецификаций, которые были использованы для создания аргументов ко)чандной строки подпроцессов„введите следующую команду: Ф асс -ссшрареса ! шоте Спецификация для опций и аргументов, перелаваемых подпроцессу, состоит из одной строки, Набор спецификаций по умолчанию для каждого основного подпроцесса встроен в дсс и автоматически становится частью компилятора, тем не менее, действующие по умолчанию строки спецификации можно подменять при конфигурировании компилятора.
Вот пример информации, нахоляшейся а строке спецификации, это — спецификация, используемая лля вызова препроцессора С: *срр: Ырсе)х:-р Ровтх вооясе) Ыреихеас;-р вяемтв)цчт) С помощью этой спецификации при вызове срр опция --реевых командной строки дсс приведет к использованию в командной строке срр опции -)) ровтх воипсп, а опция --рг)згеаб — к использованию в команлной строке срр опции -и вппмтвмт. Строка спецификации, устанавливающая условия для всех возможных опций, передаваемых подпроцессу, может быть довольно сложной. Примером более сложной строки спецификации (далеко не самой сложной) может служить строка вызова ассемблера: *авшг Ытз-)г) Ыду: ) Ы 1)яш:-яу) Ыа) Ыт) Давайте разберем этот пример. Если в команлной строке дсс будет указана опция -т, то в командной строке ассемблера будет присутствовать опция -тг. Если в команлной строке дсс будет указана опций -ЯУ, она не передается ассемблеру, но если опция -дп не установлена, то в команлную строку ассемблера будет внесена опция -ау.
Если для дсс указаны опции -р или -т, то каждая из них будет передана ассемблеру Остальные опции ассемблеру не передаются. 324 Честь!И. Внутренняя структура и окружение Расширенная отладочная информация компилятора Опция -ст может использоваться для указания системе ОСС выводить внутреннюю информацию компилятора на различных этапах процесса компиляции. Полученная таким образом информация может быть полезной только для тех, кто работает над самим компилятором.
Поэтому, несмотря на то, что информация достаточно подробная, она вряд ли пригодится вам в процессе отладки или анализа приложения. Вывод информации можно организовать в одной или нескольких точках процесса компиляции. Полный набор возможностей приводится в описании опции -(т в приложении Г Выходные данные будут практически одними и теми же лля всех точек. Они будут содержать информацию об удаленных ненужных инструкциях, выделении регистров, освобождении регистров (когда содержащееся в регистре значение удаляется) и генерируемые инструкции на внутреннем языке регистрового переноса (Кеа)з(ег Тгапз(ег [.апяцаяе, КТ[.). Например, следующая простая программа сравнивает одно значение с другим и определяет должны ли выполняться операторы в ответвлении; /» вноикЪлвр.с */ 1пг а = 44/ вгаеьс 1пг Ь = 22; 1пг паьп(ьпг агдс,сьаг »агдт[)) ( тт(а > Ы ( а/ е1ве ( а Ь; ) ) Следующая команда компилирует программу и запрашивает отладочные данные непосредственно после генерации КТЕ-кода: Ф дсс -сг вцоиФлпр.с -о вноисспр Дамп отладочной информации записывается в файл вьоме[щэр.с.
оо. ге1 и выглядит примерно так: ;/ Кипссьоп па1п (поев 2 О 5 МОтК тнан ПКЬКтвр -1З4744О721) <ьпвп 5 2 б (п11) (рага11е1[ (вее (гед/га81 7 евр) (апдиа1 (гед/Е!81 7 евр) (сопве апг -16 [Охггггегео)))) (с1оЬЬег (гед:СС 17 Е1адв)) ) ) -1 (пьь) (п(1)) (ьпвп б 5 7 (п11) (вес (геда81 59) (сопвс ьпс 0 [Охо))) -1 (п11) 32б Часть [И. Внутренняя структура и окру;.кение (ПОГЕ 24 гЗ 26 МОТЕ 1ивн РЕЬЕТЕР -134744О721) (лпвп 26 24 27 (пл1) (вег (гедз81 63) (пвш/Ез81 (ВУЮЬО1 геЕз81 ( Ь")) [О Ь+О 84 К32])) -1 (п11) (пл1)) (Епвп 27 26 23 (п11) (вес (пеп/Е з 81 (ВтзпЬо1 геЕз31 ( "а" ] ) [О а+О 34 КЗ2] ) <гедз81 63)) -1 (п11) (п41)) (себе 1аЬе1 23 27 29 3 "" "" [О ивея]) (ваге 29 23 33 МОТЕ 1888 РПМСТ1ОМ ЕМП -1347440721) (Епвп 33 29 34 (п11) (с1оЬЬег <гед/Ез81 О еах)) -1 (п11) (п11)) (Епвп 34 33 31 (п11) (с1оЬЬег (гедз31 53)) -1 (п11) (п11)) (соз[е 1аЬе1 31 34 32 1 "" '"" [О ивев]) (лпвп 32 31 35 (паа] (вес (гед/лз81 О еах) (гедз31 53) ) -1 (пз.1) (пл1)) (Епвп 35 32 О (п11) (иве (гед/Ез31 О еах)) -1 (п11) (п41)) Информация о файлах и каталогах Компилятор ССС имеет набор опций, при указании которых компилятор осуществляет поиск на диске требуемых файлов.
Поскольку каталоги, в которых компилятор выполняет поиск библиотек„определяются конфигурацией системы, вам может понадобиться определить местоположение используемой библиотеки. Это можно сделать с помоц<ью опции -рг1пе-Е118-палке. Например, так можно ОП- ределить местоположение библиотеки 11Ьдсс. а: 3 дсс -ргапЕ-Е11е-папе=11Ьдсс.а /ивг/1 ЕЫдсс-11ЫЕ536-рс-11пих-дпи/3 .
2/1лЬдсс. а Вообше опцию -ргЕпс-ЕЕ1е-паше мо]кно использовать для определения местоположения любой библиотеки, но для бнблиотеки 1ЕЬдсс. а есть собственная оп ция: б дсс -ргапг-1ЕЬдсс-ЕЕ1е-пвазе /ивг/1лЫдсс-1лЫл536-рс-11пих-дпи/3.2/3 ЕЬдсс.а Аналогично вы имеете возможность определить полный путь к запускаемым програмлзам таких внутренних подпроцеесов, как сс1 и сс1оЬз.
Например, для определения местоположения файла Ет 71: б дсс -рг1пг-ргод-папе=Е771 /ивг/11Ыдсс-1лЫ1586-рс-1лпих-дпи/3. 2/Е771 Глава тй. Выход компилятора 327 С помощью следующей команды можно определить каталог установки ОСС и полный путь как к программам, так и к библиотекам: В ясс -рсьве-аеехсь-савв >раен.вехе Результат выполнения этой команды может быть довольно большим, а пути выводятся в виде одной непрерывной строки, поэтому результат удобнее перенаправить в файл, который в дальнейшем можно проанализировать с помощью программы- редактора. Сначала в файле результатов указывается каталог установки компилятора, а затем пути к программам и библиотекам.