bfd.h 应该在 Ubuntu 14.04 中包含 libiberty/ansidecl.h 吗?

bfd.h 应该在 Ubuntu 14.04 中包含 libiberty/ansidecl.h 吗?

binutils 包似乎已更改,因为它包含的目录libiberty.h已移至/usr/include/libiberty,因此可能存在关于bfd.h的错误包含ansidecl.h

使用 binutils 跟踪实用程序时出现编译错误

/usr/include/libiberty/libiberty.h: In function ‘basename’:
/usr/include/libiberty/libiberty.h:110:38: error: expected declaration specifiers before ‘ATTRIBUTE_RETURNS_NONNULL’
 extern char *basename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1); 
                                      ^
/usr/include/libiberty/libiberty.h:121:45: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ATTRIBUTE_RETURNS_NONNULL’
 extern const char *lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1); 
                                             ^
/usr/include/libiberty/libiberty.h:126:49: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ATTRIBUTE_RETURNS_NONNULL’
 extern const char *dos_lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1);
                                                 ^
/usr/include/libiberty/libiberty.h:132:50: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ATTRIBUTE_RETURNS_NONNULL’
 extern const char *unix_lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1);

通过更改bfd.h为包含/usr/include/libiberty/ansidecl.h,我的编译一切顺利。

请问,针对这个问题有什么提示吗?谢谢。

答案1

据报道爱德华多·阿比纳德(问题作者)和肖恩·杰克曼作为错误 58689消息 00135分别根据交换的数据得出结论......

这是由 Ubuntu 系统上较旧的库安装引起的问题,我猜测这既不是 Ubuntu 也不是 binutils 的错误,但看起来像是系统更新问题。解决方案包含在问题本身中。




附言:但最重要的是我们当时和现在都有答案。更多详细信息可在链接中找到!如果需要,请改进此答案。:)

相关内容