Действительно ли возможно заставить GCC читать из канала?

Я ищу опцию к gcc это заставит его считать исходный файл из стандартного входа, главным образом таким образом, я мог сделать что-то вроде этого для генерации объектного файла от инструмента как flex это генерирует код C (flex -t опция пишет сгенерированный C в стандартный вывод):

flex -t lexer.l | gcc -o lexer.o -magic-option-here

потому что я действительно не забочусь о сгенерированном файле C.

Что-то вроде этого существует, или я должен использовать временные файлы?

61
задан Peter Mortensen 22 August 2019 в 12:05
поделиться

2 ответа

Yes, but you have to specify the language using the -x option:

# Specify input file as stdin, language as C
flex -t lexer.l | gcc -o lexer.o -xc -
74
ответ дан 24 November 2019 в 17:20
поделиться
flex -t lexer.l | gcc -x c -c -o lexer.o -

Basically you say that the filename is -. Specifying that a filename is - is a somewhat standard convention for saying 'standard input'. You also want the -c flag so you're not doing linking. And when GCC reads from standard input, you have to tell it what language this is with -x . -x c says it's C code.

18
ответ дан 24 November 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: