linux - "Can' t open a bfd on stdout"来自 gcc 的错误

标签 linux gcc

我试图通过管道从 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/

相关文章:

用于在特定文件中搜索文本的 Linux 命令

c - recvmmsg() 不填充 msghdr.msg_namelen?

linux - 需要验证变量的长度并在 unix 中执行相应的操作

c++ - 大括号初始化与括号错误

c++ - GCC 上 map 迭代器错误的自动声明

c++ - Xcode gcc : dependency_info. dat 没有那个文件或目录

c - `((t*)0)->f)` 在 C 代码中的作用是什么?

linux 在标签之间提取字符串并在其他标签之间粘贴

c - 获取__data_start符号的地址

c++ - 带有 -fno-builtin 的 GCC 似乎不起作用