如何在AOSP/LineageOS编译中禁用-Werror或添加-Wno-error
在AOSP/LineageOS中禁用内核编译的-Werror或添加-Wno-error标志
以下是几种可行的解决方法,按优先级从易到难排序:
1. 临时通过编译命令传递参数
不用修改任何文件,直接在brunch命令前附加环境变量,临时覆盖编译参数:
KBUILD_CFLAGS="-Wno-error" brunch a06
如果只想忽略特定类型的警告错误(推荐,避免丢失其他有用警告),可以指定具体类型,比如:
KBUILD_CFLAGS="-Wno-error=unused-variable -Wno-error=implicit-function-declaration" brunch a06
2. 修改设备的BoardConfig.mk
找到你设备对应的配置文件(路径一般是device/[品牌]/[机型]/BoardConfig.mk),在文件末尾添加:
# 全局禁用所有警告转错误 TARGET_KERNEL_CFLAGS += -Wno-error # 或者针对特定警告类型 # TARGET_KERNEL_CFLAGS += -Wno-error=unused-variable
LineageOS部分设备可能用KBUILD_CFLAGS替代TARGET_KERNEL_CFLAGS,两种都试试即可。
3. 修改内核目录的Makefile
进入你内核源码的根目录,打开Makefile:
- 搜索包含
-Werror的行,直接删除该行; - 或者在
KBUILD_CFLAGS的定义后追加-Wno-error,比如:KBUILD_CFLAGS += -Wno-error - 另外,部分内核会通过配置项控制
-Werror,可以检查内核的.config或defconfig文件,把CONFIG_WERROR=y改成# CONFIG_WERROR is not set。
4. 检查设备专属内核编译脚本
有些设备会在device/[品牌]/[机型]/目录下有单独的内核编译脚本(比如kernel.mk),找到其中传递编译参数的部分,直接添加-Wno-error到参数列表里。
注意事项
- 修改配置文件后,务必执行
m clean或make clean清理编译缓存,避免旧参数残留; - 优先使用针对特定警告的
-Wno-error=xxx,全局禁用会错过很多潜在的代码问题。
内容的提问来源于stack exchange,提问作者Natsuki.HX
相关产品推荐
相关产品推荐

