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

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

错误解析(中文)

  1. 强制内联失败:
    编译器无法完成uclamp_se_set函数的内联操作——该函数被标记为always_inline,但编译tune.c时找不到函数体的实现代码,导致内联要求无法满足。
  2. 未知编译选项:
    当前使用的编译器不支持-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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:45:00