Нет, не с самим -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, даже если компилятор обычно использует встроенный препроцессор.