GCC - The Complete Reference (537669), страница 123
Текст из файла (страница 123)
При отсутствии опций -МТ и -м() имя объектного файла для выводимого правила будет совпадать с именем исходного, только с соответствующей заменой суффикса. Исходным файлом может быть файл любого из типов, перечисленных в таблице Г1, если к немудопустимо применение предобработки кода. Например, если указать файл с исходным кодом на языке lата, то будет выведен путь к системному файлу типа . зах.
Другими опциями препроцессора, используемыми при выработке правил для компоновочных скриптов (тахег11ез), являются -мп, -ммп, -мг, -ма, -мм, -мр, -м() и -ИТ. Опция может быть записана как --берепйецс1ев. — п)а!п=с!ахните Зауа Указывает имя класса, содержащего метод с именем паап () . Метод ваап () этого класса назначается входной точкой выполнения вырабатываемой компилятором программы. Опция используется при компиляции файлов исходного кода классов н входных файлов интерпретатора уста в объектный код, -п)а! 19пед-дата Рогггап Применяется только при компиляции программ на языке Рог(гал для платформ 1п(е1 х86. Применение 64-битного выравнивания чисел с плавающей точкой двойной точности серьезно ускоряет работу на этих платформах программ, использующих много данных типа нвдъ(кхьпз=а) (попвъв внвсхв*ом).
Рге Действует в основном так же, как опция -М. Отличие состоит в том, что она не задействует опцию -в. Кроме того, правило зависимостей выводится в файл, имя которого наследует имя исходного файла и имеет суффикс .б. Возможно, назначение имени файла для вывода правила зависимостей опцией -мн или -о. Опция может быть записана в форме --нтхее-берепсепсхев. Рге Действует как опция -мп, только не выводит имена системных заголовочных файлов.
Опция может быть записана в форме --эгхъ~е-ивет-сХврецбецсъвв. Приложение Г. Опции командной строки компилятора АСС 553 Рге -МР лепете При использовании вместе с опцией -м, -мм, -мр или -ммп указывает имя файла для вывода правила зависимостей. Другим способом назначения имени для такого файла является назначение переменной окружения пеРЕйП)емсХЕЯ 0()ТР()т. Рге Зта опция может использоваться вместе с опцией -м или -мм для указания, что пропущенные заголовочные файлы должны считаться генерируемыми файлами, создаваемыми в том же каталоге, где находится исходный файл.
Зависимости для них вырабатываются так, как будто они присутствуют и не включают других заголовочных файлов. Опция может быть записана в форме — -ркзпе-я(звлзпд-йз1е-берепбецсзев. Рге Действует как опция -МВ, только не выводит имена системных заголовочных файлов. Опция может быть записана в форме --ивет-берепбепсзел. Рге Зта опция может использоваться вместе с опцией -м или -мм для создания "пустой" цели для каждого включаемого файла.
Единственной целью этой опции является предотвращение вывода программой зва)ке сообщений об ошибке в случае удаления из исходников ссылок на заголовочные файлы без обновления компоновочного скрипта (ща1(ей! е). Рге -МО гггепате Действует в основном так же, как опция -мт. Отличие состоит в том, что имя целевого файла размечается в соответствии с требованиями оформления компоновочного скрипта (щайей!е), Например, по команде асс -М -М() 'Ф(ОВЛ)ВК)шгк.о' Ъктп)к.с будет выведено следующее правило: 3$[ОВЛжк)иск.о: Ъквж)К.С -МТ аетате Рге Используется с опцией -м или опцией -мм для назначения имени целевого файла вырабатываемого правила зависимостей.
По умолчанию файл цели наследует имя исходного файла и имеет суффикс .о. Опцию -мт можно использовать для назначения ему другого имени, добавления к имени файла пути расположения, или использования в названии файла значения какой-либо переменной окружения. Например, по команде дсс -М -МТ '9 (ОВЗМВК)жкк.о' Ък3.пк.с 554 Часть Пд Приложения будет выведено следующее правило: $(ОВОМад)вги.с: Ье1пи.с См. также -Мо. — по-Ипе-согпгпапс!д Опция имеет то же значение, что и -в. — по-д1апдаг(!-!пс!ис!ед То же, что и опция -повсдапс. — по-д1апдаг(!-ИЬгаг!ед То же, что и -повсо11Ь.
Рге Рге, А(!а !.!и!(ег — по-)))гагп!п9д Опция указывает компилятору ие выводить предупредительных сообщений. Тоже, что и -тг. !.)и!(ег -по(!е1аы!1ИЬд !.!п3(ег -подсаг1ЕИед !.!и!(ег При этой опции компоновщик ие будет включать в программу стандартные объектные файлы, содержащие код инициализации среды выполнения программы (а(апор оь!ес( й!ез), см. также -повса11ь и -пооейаи1с11ьв. Рге, Ас!а -поет(!!пс Предотвращает поиск компоновщиком заголовочных файлов в стандартных системных каталогах. При этой опции поиск может проводиться только в текущем каталоге и каталогах, указанных опциями -Х. При этой опции компоновщик ие будет использовать подпрограммы из стаидартиых системных библиотек. Будут использоваться только те библиотеки, которые явным образом указаииы в командной строке Компилятор может сгенерировать вызовы системных функций шешсруО, швшсшр() и шешвес() на системе Бушегп Чили Ьоору() и Ьаеко() иа ВБО.
Обычно эти внешние обращения разрешаются с помощью использования системной библиотеки языка С11Ьс.а. Если вы отмените использование стандартных системных библиотек, то вам придется позаботиться о том, чтобы предоставить компоновщику эти подпрограммы. Стандартная библиотека 11Ьегсс. а содержит набор особых подпрограмм, специфичиых для предназначаемой платформы.
По существу они являются необходимой частью компилятора. Поэтому следует указывать -1дсо даже при отмене использования стандартных системных библиотек. См. также -повсагсх11ев и -повсй11Ь. Приложение Г. Опции командной строки компилятора ОСС 555 При компиляции программ на языке АгГа опция сообщает компилятору, что использование программой системной библиотеки не предполагается. Опция может быть записана в форме --по-всапбагст-ьпо1ибев.
П05И!Пь++ Рге, С++ Предотврашает поиск компоновщиком заголовочных файлов в стандартных для программ на языке С++ каталогах. Поиск в других стандартных системных каталогах при этом не отменяется. Опция специально предназначена для компиляции библиотек С++. -повй1! Ь ОпМег Эта опция применяет обе опции -повеагсб11ев и -побейаи1С11Ьв. При этом компоновщик будет использовать только те файлы, которые указаны ему в командной строке. Опция может быть записана в форме --по-веапсзагб-11Ьгагйев. -0!егге! Таблица Г.4.
Шесть уровней оптимизации у)зовввв Опивввив -О Компилятор пытается сократить как размер кода, твк и время вго выполнения. И лри этом нв выполняет модиФикаций, которые могут затруднить отладку программы. Устанавливает уровень оптимизации генерируемого компилятором кода. При оптимизации всегда приходится находить компромисс между сокращением размера кода и занимаемой памяти, и увеличением скорости выполнения программы. По умолчанию применяется -Оо, что означает отказ от применения оптимизации. Если в опции значение 1етге2 не указано то оно считается равным 1.
Если уровень оптимизации не установлен, то компилятор вырабатывает код, полностью соответствующий структуре входного исходного кода. Выполнение оптимизации не только отнимает существенно больше времени на обработку, но и требует значительно больше памяти. Компиляция программы без использования оптимизации имеет два преимушества. Во-первых, она выполняется быстро (оптимизация может занимать намного больше времени). А во-вторых, вырабатываемый при этом код намного проще трассируется в отладчике. Конечно же, вы можете трассировать и оптимизированный код. Однако, при оптимизации переносятся многие участки кода, почти всегда пропускаются некоторые ветви и участки, а некоторые оптимизации при каждом проходе дают неоднозначный результат. Все это серьезно усложняет отладку программы.
Так что отказ от оптимизации создает наилучшие условия для процесса разработки программы. Имеется другая форма представления этой опции: --ореьяг1ве. Уровни оптимизации программ, устанавливаемгяе этой опцией, перечислены в таблице Е4. 556 Часть 1Ч. Приложения Уразаев Оввеевее Включает Опции -епо-орг1жеке-в1ке, -есееек-рор, -егькевб-5пврв, -едцевв-ьквпсь-ркоьвы11гу, -сркор-кед1вгвкв и -еае1еуев-ькапсь. Флаг -Еот1г-Егвпе-ро1пгек устанавливается только если применяемый отладчик способен работать без использования регистра указателя кадра стека. Действует по умолчанию. Отключает любые оптимизации размера кода и устанавливает флаг -Епо-веков-сопвгвпгв. -00 -01 Тоже, что -о.
На атом уровне применяются все виды оптимизации, которые не требуют вычисления оптимального выбора между размером и скоростью кода, Кроме флагов, устанавливаемых при -о, дополнительно задействует следующие опции -Еорг1вЕке-в1Ы1пд-се11в, -Есве-Ео11он-5сврв, -Есве-ва1р-Ыосхв, -вдове, -Еенрепв1че-орг1п1квг1спв, -Евгкепдгь-кеапсе, -Екексп-све-аЕгек-1оор, -Екекпп-1оор-орг, -Есв11ек-вечеа, -веское-вмв, -ЕреерЬо1ез, -Евьеап1е-1пвпв, -ЕвЬесч1е-1пвпв-аегек-ке1овс, -Екедтасте, -Евгк1сг-в11вв1пд, -Еое1еге-пп11-ро1пгек-спесив и -Екескоек-Ыосхв. Этот уровень оптимизации не разворачивает циклы, не выполняет оптимизацию подстановок бпйп!пд) и переназначение регистров.
-03 В дополнение к опциям, включаемым при -оз, устанавливает также -е1п11пе- Еппсг1опв и -Екепепе-кед1вгвкв. Оптимизирует размер программы. Устанавливает все опции, действующие при -оз. Устанавливает опции -еа11дп-1оорв, -ев11дп-зовов, -ее11дп-1вье1в и -ее11дп-еепсг1опв с параметром 1, что не допускает вставку пустого пространства для применения выравнивания, -Оз -о Вепаете — орбптие !ече! То же, что и -О. — ои~ри~ Иерее То же, что и -о. — оитри~-с! аешь-диес~огу=е!!уесйоуу То же, что и -Е-оцгрцг-о1авв-а1к. !ача р Включает в программу дополнительный код, который выводит информацию, пригодную для анализа профилируюшей программой ркоЕ.
Эту опцию следует исполь- Назначает имя для выходного файла. При тип выводимой информации не имеет значения. Это может быть исходный код после предобработки, ассемблерный код, объектный модуль или скомпонованный двоичный машинный код. Опция -о может назначать имя только одного выходного файла, поэтому при выработке нескольких файлов применять ее не следует. Без указания этой опции выводимые компилятором файлы, которые содержат готовые к выполнению машиной скомпонованные программы, по умолчанию имеют имя а.оце. Опция может быть записана в форме --оцгрцг. Приложение Г.
Опции командной строки компилятора аСС 557 зовать как при компиляции исходных, так и при компоновке объектных файлов. См. также -рд. Опция может быть записана в форме --ргот11е. Рге По этой опции препроцессор при его задействовании с опцией -Е не будет генерировать директивы $11пе. Опция может быть записана в форме --по-11гзе-сопппапста. Таблица Г.5. Па амет ы оптимизации, используемые с опцией — агагп Имв вврвмвтрв Наибольшее количество просматриваемых инструкций при поиске инструкции для заполнения слота задержки (бе(ау з)о(). Увеличение значения этого параметра может улучшить генерируемый код, но при этом увеличится время компиляции. По умолчанию равно 100. Наибольшее количество просматриваемых блоков при поиске блока с подходящим временем жизни информации е регистрах.