Подтвердить что ты не робот

Можно ли заставить GCC читать с канала?

Я ищу вариант gcc, который заставит его читать исходный файл со стандартного ввода, в основном, поэтому я мог бы сделать что-то вроде этого, чтобы создать объектный файл из инструмента, такого как flex, который генерирует C код (flex -t записывает сгенерированный C в стандартный вывод):

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

потому что я действительно не забочусь о сгенерированном файле C.

Есть ли что-то вроде этого, или мне нужно использовать временные файлы?

4b9b3361

Ответ 1

Да, но вы должны указать язык, используя опцию -x:

# Specify input file as stdin, language as C
flex -t lexer.l | gcc -o lexer.o -xc -

Ответ 2

flex -t lexer.l | gcc -x c -c -o lexer.o -

В основном вы говорите, что имя файла - -. Указание имени файла - является несколько стандартным соглашением для выражения "стандартный ввод". Вам также нужен флаг -c, чтобы вы не делали ссылки. И когда GCC читает из стандартного ввода, вы должны сказать ему, на каком языке это -x. -x c говорит, что это C-код.