我的玩具语言自定义编译器使用 Cranelift 生成目标代码,我可以将其写入文件main.o
。为了使这个目标文件成为一个可执行文件,我用gcc -o main main.o
.
但是,我想将代码直接通过管道传输到 GCC,以免将临时目标文件写入磁盘,因此我让编译器将目标代码写入标准输出。用作-
文件名不起作用,因为该-x
选项似乎没有目标文件的任何值。
使用某种 shell 重定向也不起作用:gcc -o main <(compiler)
使用/usr/bin/ld: /proc/self/fd/11: file not recognized: Illegal seek
. (请注意,这在 GCC 本身处理文件时有效,例如使用gcc -xc <(echo "int main(){}") -o main
,但在文件传递给 LD 时无效。该-pipe
选项似乎也没有什么区别。)
有什么方法可以使用 GCC 链接通过管道传输到其中的目标代码吗?