我是Linux编程新手,试图使用BFD库。这是当前代码我试图编译:在Linux上使用bfd.h编译错误
#include <bfd.h>
#include <stdlib.h>
bfd *abfd;
int main() {
bfd_init();
abfd = bfd_openr("/home/mike/Desktop/testFunc/testProg", NULL);
return 0;
}
我使用下面的命令行编译:
gcc readInfo.c /usr/lib/libbfd.a -o readInfo
而且正在以下错误:
GCC readInfo.c /usr/lib/libbfd.a -o readInfo /usr/lib/libbfd.a(elflink.o):In function
elf_link_add_object_symbols': /build/buildd/binutils-2.21.53.20110810/builddir-single/bfd/../../bfd/elflink.c:4605: undefined reference to
objalloc_free_block' /build/build d/binutils的-2.21.53.20110810/builddir单/ BFD /../../ BFD/elflink.c:4892: 未定义参照_sch_istable' /usr/lib/libbfd.a(elflink.o): In function
bfd_elf_size_dynamic_sections': /build/buildd/binutils-2.21.53.20110810/builddir-单/ BFD /../../ BFD/elflink.c:6048: 未定义参照lbasename' undefined reference to
_sch_istable” collect2:LD返回1退出 状态化妆:* [全部]错误1
有是更多的错误线,您可以查看here。我确信这有一个简单的解释,但它让我陷入了一段时间。
要总结一下我迄今所做的:
- 安装干净的构建的Ubuntu
- 安装的binutils-dev软件包
我不知道,我在做什么是静态链接。是否有静态链接会导致这些错误的原因? –
'/ usr/lib/libbfd.so'依赖于其他动态库的一些功能 - 所以静态'.a'版本在链接最终可执行文件时还需要其他静态库。我无法弄清楚如何静态构建它。 – sarnold
好的。去接受这个答案,因为它解决了眼前的问题,但如果你最终发现如何正确静态编译它,我会非常感激:) –