Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
206.19 Кб
Скачать

Управление стадиями обработки и выводом компилятора

Команда 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)

Использовать для передачи промежуточных результатов последовательных стадий обработки не временные файлы, а каналы.

Соседние файлы в папке Еще материалы