Eu estou procurando uma opção para o gcc
que fará com que leia um arquivo de origem a partir da input padrão, principalmente para que eu pudesse fazer algo assim para gerar um arquivo de object de uma ferramenta como flex
que gera código C ( flex
‘s opção grava o C gerado na saída padrão):
flex -t lexer.l | gcc -o lexer.o -magic-option-here
porque eu realmente não me importo com o arquivo C gerado.
Existe algo como isso, ou eu tenho que usar arquivos temporários?
Sim, mas você precisa especificar o idioma usando a opção -x
:
# Specify input file as stdin, language as C flex -t lexer.l | gcc -o lexer.o -xc -
flex -t lexer.l | gcc -xc -c -o lexer.o -
Basicamente, você diz que o nome do arquivo é – Especificando que um nome de arquivo é – é uma convenção padrão para dizer “input padrão”. Você também quer o sinalizador -c para não estar ligando. E quando o gcc lê a input padrão, você tem que dizer qual é o idioma com o -x. -xc diz que é o código C.