Linux 内核应该使用 -Werror 构建吗?

Linux 内核应该使用 -Werror 构建吗?

我一直在构建 Linux 内核,以-Wall -Werror确保我不会错过开发过程中引入的任何警告。然而,从 4.18 开始-Werror,由于未实现的系统调用,默认的 ARM 构建似乎无法完成。如果我删除-Werror构建成功完成。

期望内核在-Werror启用状态下构建是否合理?这应该被报告为错误吗?

重现步骤:

# Set PATH and CROSS_COMPILE to appropriate toolchain
# export CROSS_COMPILE=arm-linux-gnueabihf-
# export PATH=${TOOLCHAINDIR}/bin:${PATH}

ARCH=arm KCFLAGS="-Werror" make defconfig KBUILD_DEFCONFIG=ti_sdk_am3x_release_defconfig
ARCH=arm KCFLAGS="-Werror" make zImage

遇到错误:

$ ARCH=arm KCFLAGS="-Werror" make zImage
scripts/kconfig/conf  --syncconfig Kconfig
/bin/sh: 1: Syntax error: "|" unexpected
  CC      kernel/bounds.s
  CC      arch/arm/kernel/asm-offsets.s
  CALL    scripts/checksyscalls.sh
<stdin>:1332:2: error: #warning syscall io_pgetevents not implemented [-Werror=cpp]

我发现了同样失败的其他报告(像这样),但没有明确的解决方案。

相关内容