C 未定义对“bfd”的引用按名称获取节;
我有一个C代码: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的一部分
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