Meu compilador personalizado para uma linguagem de brinquedo usa Cranelift para gerar código de objeto, que posso escrever em um arquivo main.o
. Para transformar esse arquivo de objeto em um arquivo executável, invoco o GCC com gcc -o main main.o
.
No entanto, gostaria de canalizar o código diretamente para o GCC para não ter um arquivo de objeto temporário gravado no disco, então faço meu compilador gravar o código de objeto na saída padrão. Usar -
como um nome de arquivo não funciona porque a -x
opção não parece ter nenhum valor para arquivos de objeto.
Usar algum tipo de redirecionamento de shell também não funciona: gcc -o main <(compiler)
erros com /usr/bin/ld: /proc/self/fd/11: file not recognized: Illegal seek
. (Observe que isso funciona quando o próprio GCC trabalha no arquivo, por exemplo, com gcc -xc <(echo "int main(){}") -o main
, mas não quando o arquivo é passado para LD. A -pipe
opção também não parece fazer diferença.)
Existe alguma maneira de usar o GCC para vincular o código do objeto canalizado para ele?