I'm looking for an option to gcc
that will make it read a source file from the standard input, mainly so I could do something like this to generate an object file from a tool like flex
that generates C code (flex
's -t
option writes the generated C to the standard output):
flex -t lexer.l | gcc -o lexer.o -magic-option-here
because I don't really care about the generated C file.
Does something like this exist, or do I have to use temporary files?
Gcc is small by today's standards and -pipe adds a bit of multi-core accessible parallel execution. But by the same token the CPU is so fast that it can create that temporary file and read it back without you even noticing. And since -pipe was never the default mode, it occasionally acts up a little.
Yes, but you have to specify the language using the -x
option:
# 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 -
Basically you say that the filename is -
. Specifying that a filename is -
is a somewhat standard convention for saying 'standard input'. You also want the -c
flag so you're not doing linking. And when GCC reads from standard input, you have to tell it what language this is with -x
. -x c
says it's C code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With