我一直在构建 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]
我发现了同样失败的其他报告(像这样),但没有明确的解决方案。