You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:33:12