Можно ли заставить 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-код.

Другие вопросы по тегам