是否有可能让gcc从pipe道读取?

我正在寻找一个gcc的选项,这将使它从标准input读取源文件,主要是我可以做这样的事情来生成一个像flex这样的工具生成一个目标文件,生成C代码( flex-t选项将生成的C写入标准输出):

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

因为我不关心生成的C文件。

有这样的事情存在,还是我必须使用临时文件?

是的,但是您必须使用-x选项指定语言:

 # Specify input file as stdin, language as C flex -t lexer.l | gcc -o lexer.o -xc - 
 flex -t lexer.l | gcc -xc -c -o lexer.o - 

基本上你说的文件名是 – 指定一个文件名是 – 对于说'标准input'是一个有点标准的约定。 你也想要-c标志,所以你没有做链接。 当gcc从标准input读取时,必须告诉它使用-x是什么语言。 -xc说这是C代码。