gcc command-line pipe flex-lexer

¿Es posible hacer que gcc lea desde una tubería?



command-line pipe (2)

Estoy buscando una opción para gcc que haga que lea un archivo fuente de la entrada estándar, principalmente para poder hacer algo como esto para generar un archivo de objeto a partir de una herramienta como flex que genera código C ( flex ''s -t opción escribe el C generado a la salida estándar):

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

porque realmente no me importa el archivo C generado.

¿Existe algo como esto, o tengo que usar archivos temporales?


Sí, pero debe especificar el idioma con la opción -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 -

Básicamente, usted dice que el nombre de archivo es - Especificar que un nombre de archivo es - es una convención un tanto estándar para decir ''entrada estándar''. También quiere la bandera -c para que no esté haciendo enlaces. Y cuando gcc lee desde la entrada estándar, debe indicarle en qué idioma es -x. -xc dice que es código C.