web-dev-qa-db-ja.com

GCCにパイプから読み取ることは可能ですか?

標準入力からソースファイルを読み取るgccのオプションを探しています。主に、次のようなことを行って、flexなどのツールからオブジェクトファイルを生成できます。 Cコード(flex 's -tオプションは、生成されたCを標準出力に書き込みます):

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

生成されたCファイルは本当に気にしないからです。

このようなものは存在しますか、それとも一時ファイルを使用する必要がありますか?

60
Zifre

はい。ただし、-xオプションを使用して言語を指定する必要があります。

# Specify input file as stdin, language as C
flex -t lexer.l | gcc -o lexer.o -xc -
72
Adam Rosenfield
flex -t lexer.l | gcc -x c -c -o lexer.o -

基本的に、ファイル名は-であると言います。ファイル名が-であることを指定することは、「標準入力」と言うためのやや標準的な規則です。また、-cフラグが必要なので、リンクを行いません。また、GCCが標準入力から読み取る場合は、-xを使用して、これがどの言語かを通知する必要があります。 -x cはCコードだと言っています。

18
nos