Можно ли заставить gcc читать из канала?
-
05-07-2019 - |
Вопрос
Я ищу параметр gcc
, который заставит его читать исходный файл из стандартного ввода, главным образом, чтобы я мог сделать что-то подобное для генерации объектного файла из инструмента, такого как < code> flex , который генерирует C-код (опция flex
-t
записывает сгенерированный C в стандартный вывод):
flex -t lexer.l | gcc -o lexer.o -magic-option-here
потому что меня не волнует сгенерированный файл C.
Существует ли что-то подобное или мне нужно использовать временные файлы?
Решение
Да, но вы должны указать язык, используя параметр -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-код.