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