Возможно ли генерировать вывод препроцессора и компиляцию за один шаг с помощью GCC?Вывод и сборка препроцессора GCC за один проход
Что-то вроде:
gcc -E -c main.cc -o main.o
, который будет генерировать main.o и main.i
Возможно ли генерировать вывод препроцессора и компиляцию за один шаг с помощью GCC?Вывод и сборка препроцессора GCC за один проход
Что-то вроде:
gcc -E -c main.cc -o main.o
, который будет генерировать main.o и main.i
Да.
Посмотрите на gcc
-save-temps
опцию.
Он компилирует исходный файл и сохраняет результат предварительной обработки в файле .i
. (Он также сохраняет результат фазы ассемблера в файле .s
).
gcc -save-temps -c main.cc -o main.o
будет генерировать main.o
, но и main.i
и main.s
.
main.i
является результатом предварительной обработки.
Нет, не с самого -E
, то -s
, -c
и -E
опции называются опциями "стоп". Они фактически останавливают процесс в определенной точке, поэтому вы не можете продолжать движение.
Если вы хотите это сделать, вам нужно сделать это за два прохода или использовать -save-temps
для хранения копий временных файлов, которые обычно удаляются во время компиляции.
Из gcc
, материала станицы руководств обсуждали -E
(слегка перефразировать):
Если вы хотите только некоторые из этапов компиляции, вы можете использовать -x (или суффиксы имен файлов), чтобы сказать GCC, где начать , и один из вариантов -c, -S или -E сказать, где gcc должен остановиться. Обратите внимание, что некоторые комбинации (например, -x cpp-output -E) инструктируют gcc ничего не делать.
-E означает: остановка после этапа предварительной обработки; не запускайте собственно компилятор. Выход выполнен в виде предварительно обработанного исходного кода, который отправляется на стандартный вывод (или в выходной файл, если указано значение -o).
Если вы используете опцию -E, ничего не делается, кроме предварительной обработки.
и описание -save-temps
:
-save-Temps
магазин обычные "временные" промежуточные файлы навсегда; поместите их в текущий каталог и назовите их на основе исходного файла.
Таким образом, компиляция foo.c с -c -save-temps создаст файлы foo.i и foo.s, а также foo.o.
Это создает предварительно обработанный файл foo.i, даже если в настоящее время компилятор обычно использует встроенный препроцессор.
Спасибо за подробную информацию! – alesko
Это работает отлично! Спасибо! – alesko
@alesko Добро пожаловать! – ouah
Мой компилятор на основе gcc сохраняет только файл '.s' – Adrian