在树莓派上编译驱动时,可能会遇到缺失Module.symvers的Warning。如下所示,
make -C /home/pi/Subversions/drivers/4.14.79/linux M=/home/pi/Subversions/driver s modules ARCH=arm
make[1]: Entering directory '/home/pi/Subversions/drivers/4.14.79/linux'
WARNING: Symbol version dump ./Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /home/pi/Subversions/drivers/dummy_driver.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/pi/Subversions/drivers/dummy_driver.mod.o
LD [M] /home/pi/Subversions/drivers/dummy_driver.ko
make[1]: Leaving directory '/home/pi/Subversions/drivers/4.14.79/linux'
原因
在编译驱动前,要先下载内核源码来编译内核树,编译的步骤通常是:
-
make menuconfig
, 指定编译选项 -
make
, 编译内核
Module.symvers是在编译modules时才会生成的,仅仅make
不会去编译modules。
解决方法
把编译步骤改为内核编译完成后在编译modules,既会在内核树的根目录下生成Module.symvers文件。编译步骤如下:
-
make menuconfig
, 指定编译选项 -
make
, 编译内核 -
make modules
,编译模组 - 拷贝内核树下的Module.symvers文件到驱动源码目录
- 编译驱动
编译结果不再出现缺失Module.symvers的Warning:
make -C /home/pi/Subversions/drivers/4.14.79/linux M=/home/pi/Subversions/drivers modules ARCH=arm
make[1]: Entering directory '/home/pi/Subversions/drivers/4.14.79/linux'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory '/home/pi/Subversions/drivers/4.14.79/linux'
网友评论