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?
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 -
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.