Linux平台Alsa库移植

嵌入式Linux平台Alsa库移植

1. Alsa-lib

alsa-lib下载地址:https://www.alsa-project.org/files/pub/lib/
这里使用的版本是alsa-lib-1.0.29
下载完成并解压,进入alsa-lib-1.0.29目录
编译配置如下:

./configure --host=arm-linux --prefix="" --with-versioned=no
make 
make install DESTDIR="$PWD/_install"

–host指定了交叉编译工具
–prefix设置为空
–with-versioned=no 注意:该项必须配置,否则后续aplay播放会有问题!
DESTDIR 指定了库和配置文件的安装位置
我这里只测试了aplay功能,需要用到的库及配置文件如下:

lib/libasound.so
lib/libasound.so.2
lib/libasound.so.2.0.0
share/alsa/alsa.conf
share/alsa/cards/aliases.conf
share/alsa/init/00main
share/alsa/init/default
share/alsa/pcm/default.conf
share/alsa/pcm/dmix.conf
share/alsa/pcm/dsnoop.conf

以上文件拷贝至目标板即可

2. Alsa-utils

alsa-utils下载地址:https://www.alsa-project.org/files/pub/utils/
这里使用与alsa-lib相同的版本:alsa-utils-1.0.29
下载解压后进入alsa-utils-1.0.29目录,编译配置如下:

./configure  \
	--host=arm-linux \
	--prefix="" \
	CFLAGS="-I$PWD/../alsa-lib-1.0.29/_install/include/" \
	LDFLAGS="-L$PWD/../alsa-lib-1.0.29/_install/lib -lasound" \
	--disable-alsamixer \
	--disable-xmlto \
	
make 
make install DESTDIR="$PWD/_install"

值得注意的是:需要指定刚才编译的alsa-lib相关库的路径
编译完成后,我们在_install/bin目录下就得到了aplay、amixer等相关工具,
在_install/share/sounds/alsa目录下得到了一些wav音频测试文件
将其拷贝至目标板即可

Aplay播放避坑

使用Aplay播放wav音频时,可能有人和我一样会遇到下面的报错:

not enough memory
或者
Can't use period equal to buffer size

查看aplay源码发现在set_params(void)中调用
snd_pcm_hw_params_get_period_size(params, &chunk_size, 0);
出现问题,无法准确获取chunk_size

解决方案就是在编译alsa-lib时:
.configure配置中加入:–with-versioned=no

希望我的经验能帮到你!

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值