linuxカーネル外部駆動モジュールコンパイルエラーERROR:「****.ko」undefined!

1889 ワード

私はlinuxカーネルに駆動モジュールを追加し、『linuxデバイス駆動』第3版に基づいて、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.
皆さんに役に立つことを願っています.
英語の住所:http://stackoverflow.com/questions/7812418/kernel-driver-external-modules-not-building-completely