Linux设备驱动程序(中文第三版) 2.6内核.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 的下载地址:请点这里
相关阅读:
怎样在 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