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

使用Clang 19编译Android内核时遇aapcs ABI不支持double类型错误

解决Clang 19编译Android内核时的浮点ABI错误

你遇到的错误源于Clang 19对ABI检查的严格性:宏F中传入了1.5、7.5这类浮点数,宏展开后计算2*(h)-1会触发浮点运算,但ARM的aapcs ABI在内核编译场景下不支持这类浮点表达式。不需要降级Clang,试试以下解决办法:

办法1:替换浮点数为整数表达式

把宏调用里的浮点数改成等价的整数除法,保证计算结果一致且无浮点操作:

  • 将1.5替换为3/2
  • 将7.5替换为15/2

修改后对应代码行示例:

F(266666667, P_CAM_CC_PLL0_OUT_ODD, 3/2, 0, 0),
F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 3/2, 0, 0),
F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 15/2, 0, 0),

办法2:修改宏定义强制类型转换

如果不想逐个修改宏调用,可以直接调整F宏的定义,将浮点运算结果强制转为整数:

#define F(f, s, h, m, n) { (f), (s), ((int)(2 * (h) - 1)), (m), (n) }

不过更推荐办法1,因为内核时钟配置参数本就应该是整数语义,用浮点数属于不规范写法。

办法3:应用Clang 19适配补丁

查看对应LineageOS内核仓库是否有针对Clang 19的兼容性修复补丁,或在社区寻找相关提交,直接应用补丁即可批量解决这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:15:32