是否有可能从管道中读取gcc?

时间:2009-06-16 20:01:16

标签: gcc command-line pipe flex-lexer

我正在寻找一个gcc的选项,它会让它从标准输入中读取一个源文件,主要是因为我可以做类似这样的事情从像{{1}这样的工具生成目标文件生成C代码(flex的{​​{1}}选项将生成的C写入标准输出):

flex

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

是否存在这样的事情,或者我是否必须使用临时文件?

2 个答案:

答案 0 :(得分:71)

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

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

答案 1 :(得分:18)

flex -t lexer.l | gcc -x c -c -o lexer.o -

基本上你说文件名是 - 指定文件名是 - 是说'标准输入'的标准惯例。您还需要-c标志,这样您就不会进行链接。当gcc从标准输入读取时,你必须告诉它-x是什么语言。 -x c说它是C代码。