Linux之ALSA驱动框架(一)---编译alsa-lib和alsa-util使用声卡

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题
在这里插入图片描述

一 why

当linux内核集成了ALSA驱动框架,并移植好了codec,machine以及platform的驱动之后,我们就需要使用声卡了,alsa-lib和alsa-util这两个lib就是方便user使用内核中提供的声卡驱动。

二 how

(1)编译alsa-lib

  • 下载

去网页下载源码alsa-lib,上面会显示最新的alsa-lib,比如我下载的版本是alsa-lib-1.0.27.2.tar.bz2。

  • 解压
tar xjf alsa-lib-1.0.27.2.tar.bz2
  • 配置,编译,安装
    我们选择把它安装在虚拟机的/usr目录下,但是为了不破坏虚拟机原来的/usr目录,我们选择将原/usr重命名为/usr_bak,并新建一个/usr目录。
    重要提示,因为此时修改了虚拟机原来的/usr目录,有可能会出现问题,建议大家在虚拟机中先抓取一个当前正常的快照,避免后来改出问题后,虚拟机被破坏,进不了系统,先通过快照备份一个当前正常的系统快照,以便我们后面快速恢复系统。
sudo su
mv /usr /usr_bak
export PATH=/usr_bak/local/sbin:/usr_bak/local/bin:/usr_bak/sbin:/usr_bak/bin:/sbin:/bin:/usr_bak/games:/usr_bak/local/games:/work/tools/usr/local/arm/4.3.2/bin

配置并编译安装

./configure --host=arm-linux    //不指定--prefix,则默认安装在usr目录,
make
mkdir /usr
chown book:book /usr
make install

//将编译安装后的所有文件拷贝出来,便于我们以后使用
mkdir /work/nfs_root/alsa
cp -r usr /work/nfs_root/alsa

恢复虚拟机的/usr目录

mv /usr_bak /usr
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/work/tools/usr/local/arm/4.3.2/bin
  • 拷贝头文件和库到交叉编译器
cd /work/nfs_root/alsa/usr/include
sudo cp * -rfd /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/

cd /work/nfs_root/alsa/usr/lib
sudo cp * -rfd /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
  • 复制/usr到根文件系统
cd /work/nfs_root/alsa
sudo cp -rfd usr /work/nfs_root/fs_mini_mdev_new

(2)编译ncurses

  • 下载ncurses库
    在编译alsa-util之前,我们需要先编译安装ncurse,去网页下载ncurse,选择自己需要的版本
  • 配置
tar xzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --host=arm-linux --prefix=$PWD/tmp --with-shared
  • 编译安装
make && make install

在安装过程中会提示一个错误,这个错误我们暂且忽略,错误如下:

/usr/bin/tic: symbol lookup error: /usr/bin/tic: undefined symbol: _nc_disable_period
  • 复制头文件和库到交叉工具链
cd /work/system/ncurses-5.9/tmp/include/ncurses
sudo cp * -rfd /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/

cd /work/system/ncurses-5.9/tmp/include/
sudo cp * -rfd /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/

cd /work/system/ncurses-5.9/tmp/lib
sudo cp * -rfd /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
  • 复制到根文件系统
cd /work/system/ncurses-5.9/tmp/lib
sudo cp *so* -rfd /work/nfs_root/fs_mini_mdev_new/lib

(3)编译alsa-util

  • 配置
tar xjf alsa-utils-1.0.27.2.tar.bz2
cd alsa-utils-1.0.27.2
./configure --prefix=$PWD/tmp --host=arm-linux --disable-xmlto --disable-alsamixer --disable-nls
  • 编译安装
make
sudo make install
  • 复制到根文件系统
cd /work/system/alsa-utils-1.0.27.2/tmp
sudo cp * -rfd /work/nfs_root/fs_mini_mdev_new/usr/

三 测试

  • 启动内核,arm开发板从网络文件系统启动
  • 在/dev创建node,并设置链接
mkdir /dev/snd
cd /dev/snd
ln -s /dev/controlC0
ln -s /dev/pcmC0D0p
ln -s /dev/pcmC0D0c
  • 测试
aplay xxxx.wav
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值