我试图通过管道从gcc获取输出,但它正在抛出上面的错误。命令行为gcc -pipe -c -o - -xc -
。代码通过STDIN输入。显然,BFD库需要一个可以寻找的描述符。有办法解决这个限制吗?
答案 0 :(得分:1)
对象文件包含许多对各种标题中的二进制偏移的交叉引用,并且由于编译器不知道目标文件中各个部分的大小,直到它们完成写出来因此,在完成编写实际机器代码之后,必须返回并填写这些参考文献。因此,大多数编译器都要求目标文件是可搜索的 - 否则他们需要将整个文件保存在内存中,直到他们完成编译所有内容为止!
解决方法只是编译成一个临时文件,然后cat
将此文件放入您试图使用它的其余任何管道中。