我正在寻找一个选项gcc
,它将使它从标准输入中读取源文件,主要是这样我可以做这样的事情来从flex
生成 C 代码之类的工具生成目标文件(flex
的-t
选项写入生成的 C到标准输出):
flex -t lexer.l | gcc -o lexer.o -magic-option-here
因为我并不真正关心生成的 C 文件。
是否存在这样的东西,还是我必须使用临时文件?
我正在寻找一个选项gcc
,它将使它从标准输入中读取源文件,主要是这样我可以做这样的事情来从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 -x c -c -o lexer.o -
基本上你说文件名是-
. 指定文件名是-
“标准输入”的某种标准约定。您还需要-c
标志,因此您不进行链接。当 GCC 从标准输入中读取数据时,你必须告诉它这是什么语言-x
。-x c
说是C代码。