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

amd64架构自定义Linux内核模块编译失败,686版本正常

Linux驱动amd64版本编译失败问题排查(与objtool警告相关性分析)

问题背景

  • 686架构驱动程序在6.15.x内核版本下可正常编译,但amd64版本编译失败;而6.6.x内核版本下,amd64版本能成功构建。
  • 系统为686架构,6.15.x内核默认生成amd64版本,已将modpost和fixdep替换为6.6.x版本的amd64版本。
  • 编译报错伴随objtool警告,最终构建失败,报错信息如下:
LD [M]  mydriver.o
mydriver.o: warning: objtool: .text+0x23f4: unannotated intra-function call
make[5]: *** [/usr/src/linux-headers-6.15.6-amd64-custom/scripts/Makefile.build:408: mydriver.o] Error 255
make[5]: *** Deleting file 'mydriver.o'
make[4]: *** [/usr/src/linux-headers-6.15.6-amd64-custom/Makefile:2003: .] Error 2
make[3]: *** [/usr/src/linux-headers-6.15.6-amd64-custom/Makefile:248: __sub-make] Error 2
make[3]: Leaving directory '/media/sf_V_DRIVE/mydriver/linux/driver/6.15.6-amd64-custom'
make[2]: *** [Makefile:248: __sub-make] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-6.15.6-amd64-custom'
make[1]: *** [Makefile:53: domake] Error 2
make[1]: Leaving directory '/media/sf_V_DRIVE/mydriver/linux/driver'
make: *** [Makefile:44: all] Error 2
error: Build failed.

结论:编译失败与objtool警告直接相关

从报错流程可以明确看到,objtool输出unannotated intra-function call警告后,make立即返回错误255并删除目标文件,说明6.15.x内核的构建规则中,objtool的警告被当作错误处理——这是和6.6.x内核的关键差异,要么6.6.x未开启该严格检查,要么驱动代码在6.6.x下未触发这个警告。

原因解析

objtool是内核用于验证函数调用合法性、栈帧完整性的工具,unannotated intra-function call意味着代码中存在objtool无法识别的函数内部跳转或调用场景,常见触发原因包括:

  • 使用了手写内联汇编,未添加objtool可识别的注释标记;
  • 编译器生成了非标准的指令流(比如某些优化选项导致的代码重排);
  • 驱动代码中存在不符合内核编码规范的函数调用方式,在amd64架构下触发了6.15.x新增的检查规则。

解决方向

  • 定位报错代码位置:如果目标文件未被删除,用objdump -d mydriver.o反编译,通过.text+0x23f4的偏移找到对应的代码行;若已被删除,可临时修改Makefile中的规则,禁止删除目标文件。
  • 修复未标注的调用:如果是手写汇编,添加objtool兼容的注释(比如针对内联汇编的特定标记);如果是编译器优化导致,调整编译选项(如降低优化级别)或修改代码逻辑避免非标准调用。
  • 临时绕过检查(不推荐生产环境):在驱动的Makefile中添加OBJECT_FILES_NON_STANDARD_mydriver.o := y,禁用该目标文件的objtool检查;或添加KBUILD_CFLAGS += -fno-stack-protector调整编译参数,但可能引入稳定性风险。
  • 检查工具链一致性:替换modpost和fixdep后,确认objtool工具是否也匹配版本——尝试用6.6.x版本的objtool替换6.15.x的对应工具,验证是否能绕过该检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:50:55