Takashi Iwai wrote:
You shouldn't use --enable-static for the dynamic library. Yes, usually it's OK, but alsa-lib has some special handling for static binding, so it cannot be built with dynamic lib together.
Thus, for 64bit version,
% ./configure --datadir=/etc --libdir=/usr/lib64
for 32bit version,
% ./configure --datadir=/etc
And make sure that all sound apps are killed once (otherwise the old configured dmix instance may remain undead and conflict with the new setting).
Does building alsa-lib depend on the alsa-driver version installed? - as I built the 32 bit version on a 'stock' CentOS4/RHEL4 install that didn't have the alsa-driver 1.0.15rc1 installed - would this make a difference?
alsa-lib has backward compatibility, so it should work with the older drivers. The kernel ABI is usually kept, but some exceptional cases like this timer ioctl changes can be supported only by the newer alsa-lib. But, in principle, it's safer to update both alsa-driver and alsa-lib.
Also, it's recommended to keep the same version for both 32 and 64bit alsa-lib, too, especially about dmix stuff.
Rebuilt alsa-lib 1.0.15rc1 for both 32 and 64 bit as above, installed and rebooted - however, I still can't get it to play with 32 bit apps - I still get:
% aplay test.wav Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono aplay: pcm_write:1268: write error: Invalid argument
dmesg:
ioctl32(aplay:5957): Unknown cmd fd(3) cmd(40045402){00} arg(ffffacb8) on /dev/snd/timer ioctl32(aplay:5957): Unknown cmd fd(5) cmd(c008551a){00} arg(0807a140) on /dev/snd/controlC0 ioctl32(aplay:5957): Unknown cmd fd(5) cmd(c008551b){00} arg(0807a140) on /dev/snd/controlC0 ioctl32(aplay:5957): Unknown cmd fd(3) cmd(000054a0){00} arg(00000325) on /dev/snd/timer
Thanks
James Pearson