Makefile GRUB生成无法编译

Makefile GRUB生成无法编译,makefile,gnu-make,grub2,Makefile,Gnu Make,Grub2,我从Github克隆了grub,但它无法编译并给出错误消息。错误似乎很明显,但关键是上游代码是如何编译的。我做错什么了吗 我做了以下事情来编译: ./autogen.sh ./configure --target=x86_64 --with-platform=efi make 我得到这个错误: grub_script.yy.c: In function ‘yy_fatal_error’: grub_script.yy.c:19:22: error: statement with no effe

我从Github克隆了grub,但它无法编译并给出错误消息。错误似乎很明显,但关键是上游代码是如何编译的。我做错什么了吗

我做了以下事情来编译:

./autogen.sh
./configure --target=x86_64 --with-platform=efi
make
我得到这个错误:

grub_script.yy.c: In function ‘yy_fatal_error’:
grub_script.yy.c:19:22: error: statement with no effect [-Werror=unused-value]
 #define fprintf(...) 0
                      ^
grub_script.yy.c:2367:2: note: in expansion of macro ‘fprintf’
  fprintf( stderr, "%s\n", msg );
  ^
cc1: all warnings being treated as errors
Makefile:35746: recipe for target 'normal_module-grub_script.yy.o' failed
make[3]: *** [normal_module-grub_script.yy.o] Error 1
make[3]: Leaving directory '/tmp/grub-2.02/grub-core'
Makefile:23531: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/tmp/grub-2.02/grub-core'
Makefile:10904: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/tmp/grub-2.02'
Makefile:3130: recipe for target 'all' failed
make: *** [all] Error 2

我尝试使用GCC4.8、5和7,但错误相同。我的主机是Ubuntu-18 64位。

正如@jens评论的那样,上游维护人员应该修复这个构建中断。上 从表面上看,解决办法似乎很简单。同时,解决方法也很简单,几乎可以肯定是安全的

正如您从失败的构建日志中看到的,您只会得到这个编译错误 因为
-Werror
标志有效,所以将所有警告升级为错误

破坏构建的升级警告出现在文件
grub_script.yy.c
的第2367行。 这其实是无伤大雅的警告。您可以通过以下两种方式之一使其不升级:-

/configure
脚本有一个选项
--disable-werror
,它将删除
-werror
来自所有编译的标记。因此,您可以运行:

$ ./configure --target=x86_64 --with-platform=efi --disable-werror
$ make
此解决方案不会导致编译警告升级为错误,并且 很可能是你“应该”满意的东西。您可能更喜欢一种更集中的解决方案,它可以禁用 错误升级仅适用于实际破坏生成的警告类型:

statement with no effect [-Werror=unused-value]
您可以通过以下方式实现这一点:

$ ./configure --target=x86_64 --with-platform=efi CPPFLAGS=-Wno-error=unused-value
$ make

你已经向上游询问过这个问题了吗?@Jens:是的,在提出这个问题之前,我也在GRUB的邮件线程中报告了这个问题。到目前为止还没有收到任何回应。这看起来像是一个相当古老的食物叉。实际上游是否也存在问题:?我没有看到任何关于这个主题的报告,或者-你把报告发到哪里了?