新手(为了玩ps手柄)编译模块,在模块检测时出错,求教.
我照着坛子里的贴子和自己的一点想法自己编译手柄驱动模块gamecon.c
编译时把模块支持加入内核
# Loadable module support ->
Set version information on all module symbols
(1)当此项设置为y时编译后的文件无法加载(好像是版本效验错误,且不支持加载)
在重新启动时模块检测时会出错.
(2)当此项设置为n时编译后的文件可以加载(好像是版本效验错误,但可以加载,也可以用),
在重新启动时模块检测时也会出错.
请问:
用什么方法能编译出符合版本效验的模块?
以下是我编译时的简略过程和出错信息
编译时为了能加载改了Makefile里的版本号
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
#EXTRAVERSION = -8custom
EXTRAVERSION = -8
# make mrproper
# touch .config
# make config
# Loadable module support ->
Enable loadable module support y
Set version information on all module symbols y
kernel module loader y
... ...
# make dep
# make modules
覆盖原来的模块完成安装(这里我仅仅只编译了模块)
加载时出错
# modprobe gamecon gc=0,7,7,7,7,7
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: unresolved symbol
parport_unregister_device_R76e8567d
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: unresolved symbol
parport_enumerate_Rb019f67c
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: unresolved symbol
parport_register_device_Rf6150a17
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: unresolved symbol
parport_release_Re630d383
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: unresolved symbol
parport_claim_R91004644
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: insmod /lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o failed
/lib/modules/2.4.20-8/kernel/drivers/char/joystick/gamecon.o: insmod gamecon failed 哈,可能是问题我未表述清楚.
我想问的是:
在打开其 内核模块版本效验(# Loadable module support -> Set version information on all module symbols) 功能后
除了在编译内核时就连带编译出能通过其内核版本效验的模块,这个方法之外.
还有什么其他方法没有?
比如想增加模块或修改模块,但是又不想去重新编译内核.
我只是想让自己新编译的模块能通过 内核模块版本效验 这个功能的效验,并且不会产生冲突.
我是新手,好多东西都搞不懂,望各位多帮忙赐教,我先谢谢大家了. 只有我来回贴?看来自己的问题还是自己最清楚了.(搞笑?)
google先然后摘录一段:
> ``Device busy'' 或 ``unresolved symbols''
> 您可能在 2.0.x 版核心中将音效卡支援编进核心内, 或是已载入 OSS/Lite(核心的)驱动程式(可用cat /proc/modules来检查). 移除该驱动程式或重新编译核心(请看 Kernel-HOWTO 後动手).
>在 2.0 版核心中的音效模组叫做 "sound.o", 不应该被启用. (虽然 ALSA 的驱动程式 "snd.o" 可以.)
> 如果您的核心是 2.2.x 版, 而没有将音效支援编译进去, ALSA 驱动程式也会无法作用.
> 我也知道这两种不同的状况令人困扰, 所以我在此再作一次解释. 如果您用的是 2.0.x版核心 ("uname -a"命令传回像 "Linux penguin 2.0.35 #6 Wed Sep 23 10:19:16 CEST 1998 i686 unknown") 那麽您必须将音效驱动程式剔除掉.
> 如果您的核心是 2.2.x版核心, 那麽您需要音效驱动程式. 2.2.x 版核心应该将音效驱动程式编译进核心, 但不加入任何音效卡的支援. 因此您要选音效支援, 但也确定不要加入任何音效卡驱动程式.
> 又见 Unresolved symbols
> 另一个造成 "unresolved symbols" 讯息的原因可能是新版核心配合旧版驱动程式. 请在重新编译核心之後别忘了也重新编译 ALSA 驱动程式. 如此才可以确定驱动程式能配上您的新核心.
这就是我理解的出错信息的解释,摘录自Alsa-sound-mini-HOWTO
页:
[1]