57

Вопрос по gcc – Можно ли заставить gcc читать из канала?

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

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

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

Существует ли что-то подобное или мне нужно использовать временные файлы?

  • Error: User Rate Limit Exceeded

    от Zifre
  • Error: User Rate Limit Exceeded

    от Zifre
  • @laalto: Это хороший момент, но код, который генерирует flex, в любом случае не очень удобен для чтения человеком.

    от Zifre
  • Сгенерированный C-файл полезен, если вам когда-нибудь понадобится отладить этот код.

    от laalto
  • 67

    Да, но вы должны указать язык, используя

    -x опция:

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

  • 17

    По сути

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

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