web-dev-qa-db-fra.com

Est-il possible d'obtenir GCC de lire depuis un tuyau?

Je cherche une option à gcc qui permettra de lire un fichier source à partir de l'entrée standard, principalement pour que je puisse faire quelque chose comme ceci pour générer un fichier d'objet à partir d'un outil tel que flex qui génère C code C (flex 's -t option écrit le C généré sur la sortie standard):

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

parce que je ne me soucie pas vraiment du fichier C généré.

Est-ce que quelque chose comme ça existe ou dois-je utiliser des fichiers temporaires?

60
Zifre

Oui, mais vous devez spécifier la langue à l'aide de l'-x Option:

# 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 -

Fondamentalement, vous dites que le nom de fichier est -. Spécifier qu'un nom de fichier est - est une convention quelque peu standard pour avoir dit "entrée standard". Vous voulez aussi le -c Drapeau, donc vous ne faites pas de liaison. Et lorsque GCC lit de l'entrée standard, vous devez le dire quelle langue il s'agit avec -x. -x c dit que c'est C code.

18
nos