如何编译任意Linux内核模块?iwlwifi单独编译失败求助
内核模块编译问题咨询
问题场景
编译ath.ko模块时可正常运行,执行命令:
root@debian:~/linux-5.13.19# make M=$(pwd)/drivers/net/wireless/ath modules
但使用相同方式编译iwlwifi.ko模块时失败,以下命令均报错:
命令1:编译intel目录下模块
root@debian:~/linux-5.13.19# make M=$(pwd)/drivers/net/wireless/intel modules
错误输出:
CC [M] /root/linux-5.13.19/drivers/net/wireless/intel/iwlwifi/dvm/main.o /root/linux-5.13.19/drivers/net/wireless/intel/iwlwifi/dvm/main.c:33:10: fatal error: iwl-eeprom-read.h: No such file or directory 33 | #include "iwl-eeprom-read.h" | ^~~~~~~~~~~~~~~~~~~ compilation terminated.
命令2:直接编译iwlwifi目录下模块
root@debian:~/linux-5.13.19# make M=$(pwd)/drivers/net/wireless/intel/iwlwifi modules
错误输出与上述一致。
命令3:从intel目录执行编译
root@debian:~/linux-5.13.19/drivers/net/wireless/intel# make -C /lib/modules/`uname -r`/build M=$PWD
错误输出:
make: Entering directory '/root/linux-5.13.19' CC [M] /root/linux-5.13.19/drivers/net/wireless/intel/iwlwifi/dvm/main.o /root/linux-5.13.19/drivers/net/wireless/intel/iwlwifi/dvm/main.c:33:10: fatal error: iwl-eeprom-read.h: No such file or directory 33 | #include "iwl-eeprom-read.h" | ^~~~~~~~~~~~~~~~~~~ compilation terminated.
补充说明:仅单独编译iwlwifi模块时出现此问题,执行全量模块编译命令time make -j8 modules可正常完成,但耗时过长。
疑问点
- 编译任意Linux内核模块的通用规则是什么?
- 明明文件
/root/linux-5.13.19/drivers/net/wireless/intel/iwlwifi/iwl-eeprom-read.h存在,为何编译iwlwifi时提示找不到? - 在内核Makefile中找不到变量
M的使用位置,无法理解本次编译失败的原因。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

