您的位置:首页 > 产品设计 > UI/UE

ALSA lib dlmisc.c (snd1_dlobj_cache_get) symbol _snd_pcm_plug_open is not defined inside [builtin]

2017-09-24 11:11 911 查看
$ aplay -D plug:dmix win7.wav
ALSA lib dlmisc.c:263:(snd1_dlobj_cache_get) symbol _snd_pcm_plug_open is not defined inside [builtin]
aplay: main:788: audio open error: No such device or address
$


代码追踪:



_snd_pcm_plug_open
所在的代码文件为



查看libasound.a有没有编译pcm_plug.c



可以看到,并没有此文件的。

编译的时候不指定
-with-pcm-plugins
或者添加对
plug
的支持
-with-pcm-plugins=plug
,这样编译出来的libasound.a中就有pcm_plug.o了。如下图所示:



可见,
plug
本身是也是一个
plug
,呵呵。

再次aplay也不再报第一个错误了。不过有新的错误,如下所示:

$ aplay -D plug:dmix win7.wav
ALSA lib pcm_direct.c:1722:(snd1_pcm_direct_parse_open_conf) The field ipc_gid must be a valid group (create group audio)
aplay: main:788: audio open error: Invalid argument
$








getgrnam_r
写一个Demo,这里一个简单的DEMO获取了
audio
这个group的详情。但是这个程序如果使用静态链接就会出错,这一点alsalib开发人员并没有想到。



稍作改进:



lib

make distclean ; ./gitcompile prefix=$PWD/tmp --enable-shared=no --enable-static=yes --without-libdl && make install


utils

make distclean; ./gitcompile prefix=$PWD/tmp --with-alsa-inc-prefix=/tmp/alsa-lib/tmp/include/ --with-alsa-prefix=/tmp/alsa-lib/tmp/lib CFLAGS="-static" --disable-alsamixer && aplay/aplay -D plug:dmix win7.wav


这次可以播放了。

至此解决了如果使用静态编译,dmix无法使用问题,只是一个grp引起的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐