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

树莓派4交叉编译Linux内核模块缺失asm/types.h报错问题求助

问题1:asm/types.h 缺失原因与对应路径

asm/types.h 不是Linux内核源码自带的静态文件,属于架构配置完成后自动生成的导出头文件。对于arm64架构的linux-5.10内核,该文件生成后会存放在arch/arm64/include/generated/asm/目录下,内核构建时会自动将该路径加入头文件搜索链,你遇到的报错是因为所用的内核源码没有提前完成arm64架构的配置和头文件生成步骤。

修复步骤:

  • 进入内核源码目录:cd /opt/linux-5.10.42
  • 生成arm64架构的默认配置(如果是为树莓派4编译,建议直接使用树莓派官方提供的内核配置文件替换生成的.config,避免后续模块加载不兼容):
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
  • 生成架构相关的导出头文件:
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- headers_install

执行完成后重新编译你的内核模块即可解决头文件缺失报错。

问题2:是否可以不引入linux/module.h编译内核模块

不存在合法的实现方案。linux/module.h包含了内核模块必需的全部基础定义:包括模块声明宏、加载/卸载函数注册逻辑、内核符号导出规则、版本校验标记等。缺失该头文件时,内核构建系统无法识别编译目标为可加载内核模块,也无法完成模块的合法性校验,你无法得到可以正常加载运行的内核模块产物。


内容的提问来源于stack exchange,提问作者Tristan Šneider

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 13:24:05