
- •Содержание Назначение и условия применения программы
- •Характеристики программы
- •Обращение к программе Синтаксис командной строки и правила задания опций
- •Управление стадиями обработки и выводом компилятора
- •Опции управления диалектом языка Си
- •Опции вывода и подавления предупреждений
- •Опции отладки
- •Опции оптимизации
- •Опции препроцессора
- •Передача опций ассемблеру
- •Опции каталогов поиска
- •Опции задания целевой машины и версии компилятора
- •Машинно-зависимые опции для целевой платформы
- •Опции генерации кода
- •Переменные окружения, управляющие работой компилятора
- •Перечень опций, не описанных в данной инструкции
- •Сообщения
- •Приложение а. Бинарные утилиты
- •Утилита objcopy Общие сведения
- •Формат командной строки
- •Описание опций
- •Утилита objdump Общие сведения
- •Формат командной строки
- •Описание опций
- •Редактор связейld Общие сведения
- •Описание опций
- •Переменные окружения
- •Ассемблер as Общие сведения
- •Формат командной строки
- •Входные файлы и исходная программа
- •Выходные (объектные) файлы
- •Предупреждения и сообщения об ошибках
- •Общие опции командной строки
- •Специфические опции целевой платформы
- •Лист регистрации изменений
Опции препроцессора
Некоторые из перечисленных ниже опций имеют смысл только в сочетании с -E(которая отменяет все следующие за препроцессированием шаги обработки файла), поскольку вывод препроцессора в результате оказывается непригодным для компиляции.
-include файл (--include файл)
Ввести и обработать файлперед обработкой любого обычного входного файла. Т. е. вначале всегда компилируется содержимоефайла. Опции-D, -U всегда обрабатываются раньше, чем-include, независимо от того, в каком порядке они перечислены в командной строке. Опции-include, -imacros обрабатываются в том порядке, в каком они встречаются в командной строке.
-imacros файл(--imacros файл)
Ввести и обработать файл (не производя для него никакого вывода) перед обработкой любого обычного входного файла. Поскольку вывод при обработкефайлане производится, то единственный эффект этой опции заключается в том, чтобы сделать определенные вфайлемакросы доступными при обработке входных файлов.
Опции -D, -U всегда обрабатываются раньше, чем-imacros, независимо от того, в каком порядке они перечислены в командной строке. Опции-include,‑imacrosобрабатываются в том порядке, в каком они встречаются в командной строке.
-idirafter каталог(--include-directory-after каталог)
Добавить каталог ко второму списку поиска включаемых файлов. Каталоги второго списка поиска просматриваются в том случае, если включаемый файл не найден ни в одном из каталогов основного списка поиска включаемых файлов (т.е. списка, добавление к которому производится при помощи опции-I).
-iprefix префикс (--include-prefix префикс)
Задать префиксдля последующих опций-iwithprefix.
-iwithprefixкаталог
(--include-with-prefix,--include-with-prefix-after)
Добавить каталогко второму списку поиска включаемых файлов. Имя добавляемого каталога составляется путем конкатенации значенийпрефиксикаталог, гдепрефиксдолжен быть задан при помощи предшествующей опции-iprefix. Еслипрефиксне был задан, то подразумевается каталог, где находятся выполняемые программы обработки для данной установкиgcc.
-iwithprefixbeforeкаталог (--include-with-prefix-before каталог)
Добавить каталогк основному списку поиска включаемых файлов. Имя добавляемого каталога составляется путем конкатенации значенийпрефиксикаталог, гдепрефиксдолжен быть задан при помощи предшествующей опции‑iprefix. В отсутствие опции-iprefixдействует то же умолчание, что и для опции-iwithprefix.
-isystem каталог
Добавить каталогв начало второго списка поиска включаемых файлов, пометив его как системный каталог, так чтобы к нему применялись некоторые специальные правила поиска, установленные для системных каталогов.
-nostdinc (--no-standard-includes)
Не искать заголовочные файлы в стандартных системных каталогах. Искать только в каталогах, заданных при помощи опций -I(и в текущем каталоге, если возможно).
Сочетание опций -nostdinc и-Iпозволяет использовать для поиска включаемых файлов только явно заданные каталоги.
-undef
Отменить предопределения всех макросов, кроме стандартных. (Отменяются, в том числе флаги, задающие архитектуру машины.)
-E (--preprocess)
Выполнить только препроцессирование всех входных файлов, опознанных как файлы на языке Си. Результат вывести на стандартный вывод или в заданный (при помощи -o) выходной файл.
-C (--comments)
При препроцессировании не удалять комментарии. Используется в сочетании с опцией -E.
-P (--no-line-commands)
При препроцессировании не генерировать директивы #line. Используется в сочетании с опцией-E.
-M(--dependencies)
Вывести в качестве результата препроцессирования make-правила для объектных файлов. Для каждого исходного файла генерируетсяmake-правило, целью которого является соответствующий объектный файл, а в качестве зависимостей перечисляются все включаемые файлы, прямо или косвенно упоминаемый в исходном коде. Если правило длинное, то оно выводится в виде последовательности строк, где в конце промежуточных строк используется символ продолжения "\". Список правил выводится на стандартный вывод вместо препроцессированного текста исходных файлов (опция-Mподразумевает-E).
Еще один способ запросить генерацию make-правил — определение переменной окруженияDEPENDENCIES_OUTPUT(см. ниже гл. 13).
-MM (--user-dependencies)
То же,что -M, но в качестве зависимостей перечисляются только пользовательские включаемые файлы, заданные директивами вида#include"файл". Системные включаемые файлы, заданные директивами вида#include<файл>, в правилах не упоминаются.
-MD (--write-dependencies)
То же, что -M, но информация о зависимостях файлов выводится в файлы, имена которых образуются из исходных заменой расширения ".c" на ".d". Выводmake-правил в этом случае не отменяет нормальной компиляции файлов, как это имеет место при употреблении опции-M.
-MMD (--write-user-dependencies)
То же,что -MD, но в качестве зависимостей перечисляются только пользовательские включаемые файлы, заданные директивами вида#include "файл". Системные включаемые файлы, заданные директивами вида#include <файл>, в правилах не упоминаются.
-MG (--print-missing-file-dependencies)
Считать, что отсутствующие заголовочные файлы являются генерируемыми, и предполагать, что они должны находиться в том же каталоге, где расположен исходный файл. Опцию -MGможно употреблять только в сочетании с-Mили ‑MM. Опция-MGне поддерживается опциями-MDи-MMD.
-H (--trace-includes)
Печатать в дополнение к нормальному выводу имена всех используемых включаемых файлов.
-Авопрос(ответ) (--assertвопрос(ответ))
Определить ответнавопрос для условных директив препроцессора вида#ifвопрос(ответ). Опция-A-отменяет все стандартные утверждения (assertions), которые определяют тип целевой машины.
-Dмакрос (--define-macro макрос)
Определить макрос с именем макрос и значением1.
-D макрос=значение
Определить макрос с именем макроси значениемзначение. Все опции-Dв командной строке обрабатываются раньше всех опций-U.
-U макрос(--undefine-macro макрос)
Отменить определение макроса с именем макрос. Опции-Uобрабатываются после всех опций-D, но раньше, чем опции-includeи-imacros.
-dM
Вывести в качестве результата препроцессирования только список макроопределений, действительных на конец обработки исходных файлов. Используется в сочетании с опцией -E.
-dD
Оставлять макроопределения в выходном тексте, порождаемом препроцессором. Выводить их в тех местах, где они встречаются в исходном коде.
-dN
То же, что -dD, но аргументы и значения макросов не выводятся. В выходной текст попадают директивы вида#define ИМЯ.
-Wp,опция
Передать текст опцияв качестве опции препроцессора. Если текстопциясодержит запятые, то он рассматривается как совокупность опций, каждая из которых передается препроцессору.