Linux 当内核在启用大小优化配置的情况下编译时,为什么取消对未初始化变量的警告?

Linux 当内核在启用大小优化配置的情况下编译时,为什么取消对未初始化变量的警告?,linux,linux-kernel,linux-device-driver,embedded-linux,Linux,Linux Kernel,Linux Device Driver,Embedded Linux,为了优化内核引导时间,我在CONFIG中禁用了CONFIG\u CC\u optimize\u FOR\u SIZE标志。这导致了许多可能未初始化的警告,这些警告被视为错误 正在尝试调试我在Makefile中发现的: ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE KBUILD_CFLAGS += -Os $(call cc-disable-warning,maybe-uninitialized,) else KBUILD_CFLAGS += -O2 endif 我

为了优化内核引导时间,我在CONFIG中禁用了CONFIG\u CC\u optimize\u FOR\u SIZE标志。这导致了许多可能未初始化的警告,这些警告被视为错误

正在尝试调试我在Makefile中发现的:

ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
KBUILD_CFLAGS   += -Os $(call cc-disable-warning,maybe-uninitialized,)
else
KBUILD_CFLAGS   += -O2
endif
我不理解当内核进行了大小优化而不是其他方面时,禁用未初始化变量警告背后的原因。这背后的想法是什么?如果我在后面的“未优化大小”案例中添加了忽略未初始化变量的标志,我会面临什么问题(如果有)

感谢您的帮助


感谢您

最近的内核5.1和更高版本-在撰写本文时尚未发布-请参阅使用单独的配置选项config\u CC\u DISABLE\u WARN\u UNINITIALIZED禁用警告。默认情况下,这些内核为GCC版本4.7定义了选项,该版本引入了警告和GCC版本4.8,但是可以手动配置该选项

对于内核和编译器版本,修改Makefile以全局添加$call cc disable warning(可能未初始化)应该是安全的。或者,您可以考虑使用GCC 4.9或更高版本。