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

Edu*_*der 22 compiling gcc binutils 14.04

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);
Run Code Online (Sandbox Code Playgroud)

通过更改bfd.h为 include /usr/include/libiberty/ansidecl.h,我的编译中一切正常。

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

Nov*_*ice 1

正如Eduardo Abinader(问题作者)和Shaun Jackman分别报告的Bug 58689MSG 00135,根据交换的数据得出的结论...

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




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