???? alsa-0.9.2 @ RedHat 9.0 ?
make三个包一切顺利,到这一不时:# modprobe snd-via82xx
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: unresolved symbol schedule_work
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: insmod /lib/modules/2.4.20-8/kernel/sound/acore/snd.o failed
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: insmod snd-via82xx failed
什么意思,这么解决??
谢谢! 用insmod -f /lib/modules/2.4.20-8/kernel/sound/acore/snd.o行吗?
好像rh9是有这个问题 忘说了,VIA686B # insmod -f /lib/modules/2.4.20-8/kernel/sound/acore/snd.o
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: unresolved symbol schedule_work 想换成原来使用的alsa-0.5.9,make不能通过,是不是alsa-0.5.9对rh9不支持啊? VIA686B 好像有它自己的模块吧?你./configure --help看一下,里面的--with-cards一项会列出所有的模块的。
Re: ???? alsa-0.9.2 @ RedHat 9
make三个包一切顺利,到这一不时:# modprobe snd-via82xx
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: unresolved symbol schedule_work
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: insmod /lib/modules/2.4.20-8/kernel/sound/acore/snd.o failed
/lib/modules/2.4.20-8/kernel/sound/acore/snd.o: insmod snd-via82xx failed
什么意思,这么解决??
谢谢!
u make is succ. but do u notice that when u compile the alsa driver. does it report 'implicitly declare schedule_work' or ''implicitly declare snd_compat_schedule_work'.
schedule_work is a new function defined in linux kernel 2.5.45 or later. so u 2.4.20-8 do not have it. when u insmod this module into kernel, kernel find that this module use a symbol it does not know. then insmod will fail. in alsa drive code init.c it handle thsi problem like this. it detect linux kernel version, if >2.5.45 then use the one defined in kernel. if not, it define its own one. now the problem is that its code to detect the kernel verson fails.
do u install u linux kenrel source code? u need this.
can u 'ls /usr/src' and post the screen output here?
can u 'more linux-2.4.20-8/include/linux/version.h' and post the screen output here, if u have this linux-2.4.20-8?
can u 'ln -s /usr/src/linux-2.4.20-8 /usr/src/linux', then recompile the alsa-drivers and try again?
good luck. I got it.try again.
btw,how to get 'linux-2.4.20-8/include/linux/version.h'?recompile kernel?
how to get it quickly? VIA686B 好像有它自己的模块吧?你./configure --help看一下,里面的--with-cards一项会列出所有的模块的。
VIA芯片在alsa-0.9.0beta11后使用同一个module : via82xx cd /usr/src/linux
make mrproper
make include/linux/version.h
make symlinks
这样生成version.h可以吗?
#define UTS_RELEASE "2.4.20-8custom"
^^^^^^^^^^是不是要改成2.4.20-8?
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) cd /usr/src/linux
make mrproper
make include/linux/version.h
make symlinks
这样生成version.h可以吗?
#define UTS_RELEASE "2.4.20-8custom"
^^^^^^^^^^是不是要改成2.4.20-8?
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
u need not recompile kernel, this is enough. the two important ones are LINUX_VERSION_CODE and KERNEL_VERSION(a,b,c), u can check alsa source code to know why. be sure to add /usr/src/linux symbol link, otherwise ./configure --help to see how to explicitly set kernel include. # ./configure --with-kernel=/usr/src/linux-2.4.20-8 --with-moddir=/lib/modules/2.4.20-8/kernel --with-sequencer=yes --with-cards=via82xx
checking for kernel module symbol versions... "no"
# make
gcc -M -D__KERNEL__ -DMODULE=1 -I/home/src/alsa-driver-0.9.2/include-I/usr/src/linux-2.4.20-8/include -O2-DLINUX -Wall -Wstrict-prototypes -fomit-frame-pointer -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -DALSA_BUILDhwdep32.c ioctl32.c pcm32.c rawmidi32.c seq32.c timer32.c > .depend
In file included from /usr/src/linux-2.4.20-8/include/linux/vmalloc.h:4,
from /usr/src/linux-2.4.20-8/include/asm/io.h:47,
from /home/src/alsa-driver-0.9.2/include/adriver.h:115,
from /home/src/alsa-driver-0.9.2/include/sound/driver.h:43,
from ../../alsa-kernel/core/ioctl32/hwdep32.c:21,
from hwdep32.c:2:
/usr/src/linux-2.4.20-8/include/linux/sched.h:1115:36: macro "need_resched" passed 1 arguments, but takes just 0
sched.h 怎么又有问题,不能make了? checking for kernel module symbol versions... "no" ? seems has problem.
can u do make menuconfig, enable all three options in load module support, save configuration, and make dep? then try again. i download the alsa driver code and compile it just now, works fine. 刚刚在redhat内核2.4.20-9的源码目录下查了一下,内核源码里有两个地方用到这个schedule_work函数,按道理应该支持才对
drivers/message/fusion/mptscsih.h: if (schedule_work(x) == 0) { \
drivers/message/fusion/mptlan.c: schedule_work(&priv->post_buckets_task);
include/linux/workqueue.h:extern int FASTCALL(schedule_work(struct work_struct *work));
不知道你现在用的内核是不是自己编译的?如果用的还是rh9原装自带的2.4.18-8,试试将kernel-source rpm包用--force参数覆盖安装一遍,然后重新make alsa驱动 # ./configure --with-kernel=/usr/src/linux-2.4.20-8 --with-moddir=/lib/modules/2.4.20-8/kernel --with-sequencer=yes --with-cards=via82xx
checking for kernel module symbol versions... "yes"
#make
proceeding....
Thank u