- •Содержание Назначение и условия применения программы
- •Характеристики программы
- •Обращение к программе Синтаксис командной строки и правила задания опций
- •Управление стадиями обработки и выводом компилятора
- •Опции управления диалектом языка Си
- •Опции вывода и подавления предупреждений
- •Опции отладки
- •Опции оптимизации
- •Опции препроцессора
- •Передача опций ассемблеру
- •Опции каталогов поиска
- •Опции задания целевой машины и версии компилятора
- •Машинно-зависимые опции для целевой платформы
- •Опции генерации кода
- •Переменные окружения, управляющие работой компилятора
- •Перечень опций, не описанных в данной инструкции
- •Сообщения
- •Приложение а. Бинарные утилиты
- •Утилита objcopy Общие сведения
- •Формат командной строки
- •Описание опций
- •Утилита objdump Общие сведения
- •Формат командной строки
- •Описание опций
- •Редактор связейld Общие сведения
- •Описание опций
- •Переменные окружения
- •Ассемблер as Общие сведения
- •Формат командной строки
- •Входные файлы и исходная программа
- •Выходные (объектные) файлы
- •Предупреждения и сообщения об ошибках
- •Общие опции командной строки
- •Специфические опции целевой платформы
- •Лист регистрации изменений
Управление стадиями обработки и выводом компилятора
Команда gccпредполагает по умолчанию четыре стадии обработки входных файлов на языке Си: препроцессирование, компиляция, ассемблирование, редактирование внешних связей. Первые три вида обработки применяются к индивидуальным файлам.
Редактирование связей применяется ко всей совокупности объектных файлов — как полученных в результате компиляции c-файлов, так и указанных непосредственно в командной строке. Результатом является выполняемый файл.
Пользователь может задать конечную стадию обработки всех входных файлов, заданных в команде gcc, при помощи следующих опций, которые ниже описаны более подробно:
-E— препроцессирование
-S— компиляция (получение файлов на языке ассемблера)
-c— ассемблирование (получение объектных файлов)
Поскольку редактирование связей выполняется ОС РВ Багет непосредственно на целевой машине одновременно с динамической загрузкой объектных файлов, то gccдля целевой платформы ОС РВ Багет следует применять с опцией-c.
Начальная стадия обработки определяется индивидуально для каждого файла, в зависимости от его типа. Тип входного файла определяется по умолчанию его расширением.
файл.cПрограмма на языке Си, нуждающаяся в препроцессировании.
файл.iПрепроцессированная программа на языке Си.
файл.hЗаголовочный файл на языке Си (не подвергается компиляции или загрузке).
файл.sПрограмма на языке ассемблера.
файл.SПрограмма на языке ассемблера, нуждающаяся в препроцессировании.
Файлы с прочими расширениями (за исключениемcc, cpp, C, ii, m) интерпретируются как объектные файлы, которые обрабатываются при редактировании связей.
Тип входного файла можно задать явно при помощи опции -x:
-x язык (--languageязык)
Рассматривать последующие входные файлы (до следующей опции -x) как файлы типаязык, где параметрязыкможет иметь следующие значения:
c
c-header cpp-output
assembler assembler-with-cpp
-x none
Отменить действие предшествующей опции -x, тип последующих входных файлов определять по их расширению.
Тип исходного файла определяет ту стадию (препроцессирование, компиляция, ассемблирование, редактирование связей), с которой следует начать обработку файла. Далее описаны три опции, которые определяют, на какой стадии нужно завершить обработку входных файлов.
-c (--compile)
Произвести все стадии обработки входных файлов до ассемблирования включительно, а редактирование связей не выполнять. Результатом работы gccбудет совокупность объектных файлов, полученных в результате обработки входных файлов.
По умолчанию имя объектного файла получается заменой расширения исходного файла на .o.
-S (--assemble)
Произвести обработку входных файлов до компиляции включительно, а ассемблирование не выполнять. Результатом работы gccбудет совокупность ассемблерных файлов, полученных в результате обработки входных файлов.
По умолчанию имя объектного файла получается заменой расширения исходного файла на .s.
-E (--preprocess)
Выполнить только препроцессирование входных файлов. Результатом будет препроцессированный исходный код, который направляется на стандартный вывод. Входные файлы, не нуждающиеся в препроцессировании, игнорируются.
-o файл(--output файл)
Поместить результат в файл файл. Смысл опции не зависит от типа выводаgcc, это может быть выполняемый, объектный, ассемблерный код или результат препроцессирования.
Поскольку при помощи опции -o можно задать только один выходной файл, не имеет смысла задавать ее при обработке нескольких входных файлов, если используются опции -c, -S или-E.
Если опция -oне задана, а результатом запускаgccявляется выполняемый файл, то он сохраняется под именемa.out.
-v (--verbose)
Выдавать на стандартный протокол командные строки, запускаемые gccдля выполнения каждой стадии обработки, а также номер версии драйвера компиляцииgcc, препроцессора и компилятора.
-pipe (--pipe)
Использовать для передачи промежуточных результатов последовательных стадий обработки не временные файлы, а каналы.