Можно ли заставить gcc читать из канала?
Я ищу вариант gcc
это заставит его читать исходный файл из стандартного ввода, главным образом, чтобы я мог сделать что-то вроде этого, чтобы сгенерировать объектный файл из такого инструмента, как flex
который генерирует код C (flex
"s -t
опция записывает сгенерированный C в стандартный вывод):
flex -t lexer.l | gcc -o lexer.o -magic-option-here
потому что меня не волнует сгенерированный файл C.
Существует ли что-то подобное или мне нужно использовать временные файлы?
2 ответа
Да, но вы должны указать язык, используя -x
опция:
# 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 -
По сути, вы говорите, что имя файла - Указание, что имя файла - это несколько стандартное соглашение для выражения "стандартный ввод". Вам также нужен флаг -c, чтобы не связываться. И когда gcc читает из стандартного ввода, вы должны сказать ему, на каком языке это с -x . -x c говорит, что это C-код.