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

Zif*_*fre 61 command-line gcc pipe flex-lexer

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

flex -t lexer.l | gcc -o lexer.o -magic-option-here
Run Code Online (Sandbox Code Playgroud)

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

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

Ada*_*eld 74

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

# Specify input file as stdin, language as C
flex -t lexer.l | gcc -o lexer.o -xc -
Run Code Online (Sandbox Code Playgroud)

  • 我认为它可能是-(许多其他工具都在使用它),但是我在手册页中找不到关于它的任何信息... (2认同)

小智 18

flex -t lexer.l | gcc -x c -c -o lexer.o -
Run Code Online (Sandbox Code Playgroud)

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