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

Ubuntu21.04下通过BitBake编译meson-mali报错如何解决?

问题根因

你使用的meson-mali对应的Mali Bifrost r12p0驱动为适配4.x内核的旧版本,与编译目标的5.11版本内核、高版本GCC存在兼容性问题:

  • array-bounds错误:5.11内核arm64架构的atomic_t类型定义和旧驱动的cmpxchg操作逻辑不匹配,GCC边界检查检测到类型长度不一致,触发报错
  • maybe-uninitialized错误:高版本GCC的数据流分析规则更严格,检测到栈变量buf存在未初始化就被调用的可能执行路径,因为内核默认开启-Werror将警告升级为错误

解决方案

方案1(最快生效):添加编译参数忽略指定错误

直接修改meson-mali对应的BitBake配方文件(通常为meson-mali-module.bb或同名的.bbappend文件),在编译参数中添加对这两类错误的忽略规则:

EXTRA_CFLAGS += "-Wno-error=array-bounds -Wno-error=maybe-uninitialized"

修改后重新触发BitBake编译即可,这两类警告均为不影响驱动实际运行的兼容性提示,忽略后不会产生功能问题。

方案2(彻底修复):给驱动源码打适配补丁

如果需要保留-Werror的编译检查规则,可以修改两处驱动源码:

  1. 修复array-bounds错误:在mali_kbase_tlstream.c中,将对kbase_tlstream_enabled的自定义cmpxchg操作,替换为5.x内核标准的atomic_cmpxchg接口
  2. 修复maybe-uninitialized错误:在mali_kbase_core_linux.c的kbasep_serialize_jobs_debugfs_write函数中,将buf的定义修改为初始化状态:
char buf[MAX_SERIALIZE_JOBS_NAME_LEN] = {0};

将修改内容做成补丁放到配方的files目录下,在配方中通过SRC_URI引用补丁即可。

方案3:更换适配5.x内核的驱动版本

直接选用已经适配5.10+内核的meson-mali驱动版本,替换当前使用的旧版配方即可从根源解决兼容性问题。


内容的提问来源于stack exchange,提问作者fairbird

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:24:03