如何正确安装自定义内核的头文件与源码以编译树外模块?
自定义内核下树外模块编译的头文件配置方案
确保内核源码配置与当前运行内核一致
- 若内核源码目录无
.config,从/boot/config-$(uname -r)复制到源码目录并命名为.config - 执行
make olddefconfig确认配置匹配,也可通过make menuconfig手动调整
- 若内核源码目录无
安装内核头文件到系统标准路径
- 切换到内核源码目录,执行:
make headers_install INSTALL_HDR_PATH=/usr
该命令会将模块编译所需头文件部署到
/usr/include下的对应子目录,覆盖系统默认头文件(自定义内核场景下必须执行)- 切换到内核源码目录,执行:
建立内核源码的符号链接
树外模块编译时会依赖/lib/modules/$(uname -r)/build路径指向内核源码:- 检查现有链接:
ls -l /lib/modules/$(uname -r)/build - 若链接不存在或指向错误,创建正确链接:
ln -s /实际的内核源码目录路径 /lib/modules/$(uname -r)/build - 可选:同步创建
source链接,兼容部分模块编译脚本:ln -s /实际的内核源码目录路径 /lib/modules/$(uname -r)/source
- 检查现有链接:
验证编译可行性
进入树外模块目录,执行标准模块编译命令测试:make -C /lib/modules/$(uname -r)/build M=$(pwd) modules若报错,优先排查:
- 内核配置是否开启
CONFIG_MODULES=y - 内核源码是否完成基础编译(至少执行过
make) - 头文件是否存在缺失
- 内核配置是否开启
内容的提问来源于stack exchange,提问作者eem
相关产品推荐
相关产品推荐

