C 未定义对“bfd”的引用按名称获取节;

C 未定义对“bfd”的引用按名称获取节;,c,binutils,C,Binutils,我有一个C代码: asection *s; s = bfd_get_section_by_name( abfd, "__exported_do_funs" ); 这给了我一个编译错误: file.o: In function `do_listdos': file.c:9500: undefined reference to `bfd_get_section_by_name' collect2: ld returned 1 exit status 所以我发现这是我相信的binutils的一部分

我有一个C代码:

asection *s;
s = bfd_get_section_by_name( abfd, "__exported_do_funs" );
这给了我一个编译错误:

file.o: In function `do_listdos':
file.c:9500: undefined reference to `bfd_get_section_by_name'
collect2: ld returned 1 exit status
所以我发现这是我相信的binutils的一部分,并安装了它:

Installed Packages
binutils.i386                     2.17.50.0.6-26.el5        installed
binutils-devel.i386               2.17.50.0.6-26.el5        installed
但是仍然会得到相同的编译错误。我错过什么了吗

我正在运行:
gcc版本4.1.2 20080704(Red Hat 4.1.2-51)

这在我的头文件中:

#include <bfd.h> /* Eizneckam's BFD Code */

lib位于
/usr/lib/libbfd.a

中,这意味着它没有找到此函数的实现

就你而言:

要使用库,请包括
bfd.h
并链接到
libbfd.a


参考资料:

您应该包括定义此函数的.h文件…可能是@ericbn的副本。我理解这个概念,并且根据我的理解,我正确地进行了设置。我不确定发生错误的原因。您需要将库引用放在对象文件之后。因此,将所有的
-lbdf
和类似的命令移到编译器行的末尾。可能重复的
-lbfd
是正确的gcc开关吗?这就是gcc argsYeah中已经存在的内容,其中包括libbfdYep,但仍然会得到相同的错误。下面是完整的编译日志:请参阅
/usr/bin/gcc -c -g -g3 -Wall    -DREQUESTS -DSMAUG14  -DTIMEFORMAT -DREGEX file.c

/usr/bin/gcc    -lcrypt -lz -lbfd -liberty -lm -lmysqlclient -lnsl -L/usr/lib/mysql -I/usr/include/mysql/ -o