我试图通过管道从 gcc 获取输出,但它抛出了上面的错误。命令行是 gcc -pipe -c -o - -xc -
。代码通过 STDIN 输入。显然,BFD 库需要一个可搜索的描述符。有没有办法解决此限制?
最佳答案
目标文件包含大量对各种 header 中二进制偏移量的交叉引用,并且由于编译器在完成写出之前不知道目标文件中的各个部分有多大,因此它有在编写完实际的机器代码后返回并填写这些引用。因此,大多数编译器将要求目标文件是可查找的——否则他们需要将整个文件缓冲在内存中,直到他们完成编译所有内容!
解决方法是简单地编译成一个临时文件,然后将此文件cat
放入您尝试在其中使用它的任何管道的其余部分。
关于linux - "Can' t open a bfd on stdout"来自 gcc 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996936/