[RaspberyPi] 驱动编译 - 缺少Module.symvers文件

在树莓派上编译驱动时,可能会遇到缺失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'

你可能感兴趣的:([RaspberyPi] 驱动编译 - 缺少Module.symvers文件)