Linux内核外部驱动模块编译报错ERROR: “******”

Linux设备驱动程序(中文第三版) 2.6内核.pdf下载

Linux设备驱动开发详解(第2版)源代码 下载

Linux设备驱动开发详解(第2版)高清PDF 

修改Makefile如下:

obj-m := GobiNet.o 
  GobiNet-objs :=  GobiUSBNet.o QMIDevice.o QMI.o 

但是出现了如下错误:

/home/sylvain/Projects/Android_gingerbread_realv210_ver_1_0/kernel 
  CHK    include/linux/version.h 
  CHK    include/generated/utsrelease.h 
make[1]: `include/generated/mach-types.h' is up to date. 
  CALL    scripts/checksyscalls.sh 
  CHK    include/generated/compile.h 
  LD      drivers/cell/OptionGobiNet/built-in.o 
  CC [M]  drivers/cell/OptionGobiNet/GobiUSBNet.o 
  CC [M]  drivers/cell/OptionGobiNet/QMIDevice.o 
  CC [M]  drivers/cell/OptionGobiNet/QMI.o 
  LD [M]  drivers/cell/OptionGobiNet/GobiNet.o 
  Kernel: arch/arm/boot/Image is ready 
  SHIPPED arch/arm/boot/compressed/lib1funcs.S 
  AS      arch/arm/boot/compressed/lib1funcs.o 
  LD      arch/arm/boot/compressed/vmlinux 
  OBJCOPY arch/arm/boot/zImage 
  Kernel: arch/arm/boot/zImage is ready     
  Building modules, stage 2. 
  MODPOST 5 modules 
ERROR: "usbnet_suspend" [drivers/cell/OptionGobiNet/GobiNet.ko] undefined! 
ERROR: "usbnet_resume" [drivers/cell/OptionGobiNet/GobiNet.ko] undefined! 
ERROR: "usbnet_disconnect" [drivers/cell/OptionGobiNet/GobiNet.ko] undefined! 
ERROR: "usbnet_probe" [drivers/cell/OptionGobiNet/GobiNet.ko] undefined! 
make[1]: *** [__modpost] Error 1 
make: *** [modules] Error 2 

编译过程中生成了"GobiNet.mod.c"和"GobiNet.o",但是并没有生成GobiNet.ko文件。
经历一番折腾之后,我发现问题的原因了。

我误解了错误信息,没有清楚ko生成过程。编译模块在链接过程中查找外部符号表,但并没有找到,因为该外部符号表并没有编译。

根据以上分析,我查看了外部符号在drivers/net/usb/usbnet.c文件,这就需要配置.config文件中设置CONFIG_USBNET=y。

希望对大家有所帮助。

Linux Kernel 的详细介绍请点这里
Linux Kernel 的下载地址请点这里

相关阅读

Linux内核将用nftables替代iptables

Linux 3.12代号Suicidal Squirrel

怎样在 Ubuntu 上安装 Linux 3.11 内核

Ubuntu 13.10 (Saucy Salamander) 内核已升级至 Linux Kernel 3.10 RC5

Linux Kernel 3.4.62 LTS 现已经提供下载

如何在Ubuntu 13.10上安装Linux内核 3.12

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ada3160b7142a6eb880cf36c2a050e76.html