OSS使用版本
oss-v4.2-build2020-src-gpl.tar.bz2http://www.4front-tech.com/developer/sources/stable/gpl/oss-v4.2-build2020-src-gpl.tar.bz2
在UBUNTU上安装OSS4.2可以采用apt-get安装oss4-base oss-dkms liboss4-salsa2
也可以手动编译下载的OSS4.2
salsa是OSS的alsa的简单兼容层库,在lib/libsalsa下,按说明好像无法编译只能选NO
按照--help提示configure --enable-libsalsa=YES后无法运行只能不带,然后到目录下手动make编译,编译后生成libsalsa.so依赖于libOSS
使用aplay播放时可用将libsalsa.so链接为/usr/lib/x86_64-linux-gnu/libasound.so.2,然后播放,会采用兼容层调用OSS播放
播放时会提示采用兼容层播放
root@dzg-virtual-machine:/home/dzg/work/tools/alsa-0.9rc3/alsa-utils-0.9.0rc3/aplay# ./aplay /work/tmp/in.wav
******************** WARNING *******************************
Warning! aplay uses ALSA emulation instead of the native OSS API
****************************************************************
Playing WAVE '/work/tmp/in.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
ldd ./aplay
linux-vdso.so.1 (0x00007ffca797e000)
libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fe4bd92c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe4bd58e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe4bd38a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe4bd16b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe4bcd7a000)
libOSSlib.so => /usr/lib/x86_64-linux-gnu/libOSSlib.so (0x00007fe4bcb76000)
不过OSS4.2的SALSA兼容层好像只支持老版本的ALSA库链接的程序,源码里限定ALSA_0.9, ALSA_0.9.0rc4,因此只能自己下载ALSA的lib及util重新编译,下载alsa-lib-0.9.0rc3.tar.bz2无法编译通过,需要使用alsa-driver-0.9.0rc3.tar.bz2里面的include文件编译才行,并且configure脚本也无法执行成功,libtool版本太高不支持ltconfig了,解决方法
ltconfig: you must specify a host type if you use `--no-verify'
Try `ltconfig --help' for more information.
configure: error: libtool configure failed
其实真正有用的是上面的
checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
大意是configure认不出系统的类型, 然后出现下面的 you must specify a host type. 解决方法是:
用 /usr/share/misc/config.guess 覆盖alsalib目录下 config.guess
用 /usr/share/misc/config.sub 覆盖 alsalib目录下 config.sub
重新编译成功后可以用来链接aplay程序了
编译aplay程序发现好多语法ubuntu里的gcc不认了,一一修改后重新编译手动链接上面的lib,成功后就可以用来播放文件了,这个SALSA兼容库支持的还是有限,并且不更新,不推荐使用了,还是老老实实用OSS的API调用吧