Redmi Note 12 Pro 5G(ruby)内核编译求助:NetHunter WiFi驱动编译失败
为Redmi Note 12 Pro 5G编译Kali NetHunter内核的错误排查与解决
基础信息
- 设备:Redmi Note 12 Pro 5G(代号
ruby) - 需求:编译适配Kali NetHunter的WiFi驱动(需先完成内核编译)
- 尝试过的内核源码:
- 小米官方开源内核(ruby-s-oss分支)
- Coconutat/android_kernel_xiaomi_ruby_exp
- Mayuri-Chan/android_kernel_xiaomi_ruby
编译错误输出
In file included from kernel/sched/tune.c:11: kernel/sched/sched.h: In function ‘alloc_uclamp_sched_group’: kernel/sched/sched.h:2365:13: error: inlining failed in call to ‘always_inline’ ‘uclamp_se_set’: function body not available 2365 | inline void uclamp_se_set(struct uclamp_se *uc_se, | ^~~~~~~~~~~~~ kernel/sched/tune.c:573:17: note: called from here 573 | uclamp_se_set(&st->uclamp_req[clamp_id], | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 574 | uclamp_none(clamp_id), false); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/sched/sched.h:2365:13: error: inlining failed in call to ‘always_inline’ ‘uclamp_se_set’: function body not available 2365 | inline void uclamp_se_set(struct uclamp_se *uc_se, | ^~~~~~~~~~~~~ kernel/sched/tune.c:573:17: note: called from here 573 | uclamp_se_set(&st->uclamp_req[clamp_id], | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 574 | uclamp_none(clamp_id), false); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ At top level: cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics make[2]: *** [scripts/Makefile.build:334: kernel/sched/tune.o] Error 1 make[1]: *** [scripts/Makefile.build:637: kernel/sched] Error 2 make: *** [Makefile:1172: kernel] Error 2
错误解析(中文)
- 强制内联失败:
编译器无法完成uclamp_se_set函数的内联操作——该函数被标记为always_inline,但编译tune.c时找不到函数体的实现代码,导致内联要求无法满足。 - 未知编译选项:
当前使用的编译器不支持-Wno-constant-logical-operand这个编译选项,该选项原本可能用于屏蔽早期诊断信息,但版本不兼容导致无法识别。
解决步骤
1. 修复内联失败问题
- 检查内核源码目录下的
sched文件夹,确认uclamp_se_set函数的实现是否存在(通常在sched/core.c或同目录其他文件中),确保编译时该文件被正确纳入编译流程。 - 修改
kernel/sched/sched.h中uclamp_se_set的声明:将always_inline改为普通inline,或者直接移除内联标记,让编译器跳过强制内联要求。
2. 处理未知编译选项
- 在编译脚本或内核根目录的Makefile中搜索
-Wno-constant-logical-operand,找到后删除该选项。 - 若依赖该选项屏蔽警告,可尝试升级编译工具链到支持该选项的版本(推荐使用与设备官方内核匹配的工具链)。
3. 验证内核源码合规性
- 优先使用小米官方的
ruby-s-oss分支内核,第三方仓库可能存在代码缺失或修改不兼容问题,先单独编译官方内核排除源码本身的问题。 - 确认内核源码分支与设备的Android版本匹配(
ruby-s-oss对应Android 13/14),Kali NetHunter的环境版本需与内核适配。
内容的提问来源于stack exchange,提问作者Rehan Tamboli
相关产品推荐
相关产品推荐

