交叉编译alsa-lib库,amixer和aplay工具

  • Post author:
  • Post category:其他



1. 导出alsa安装目录



export gliethttp_alsa_lib=/usr/local/alsa



mkdir $gliethttp_alsa_lib



sudo chown luther:luther $gliethttp_alsa_lib -R



2. 编译alsa-lib库



./configure –build=i386 –host=arm-linux –disable-python –prefix=$gliethttp_alsa_lib



make;make install



3. 编译alsa-utils



./configure –build=i386 –host=arm-linux –with-curses=ncurses –disable-xmlto –with-alsa-inc-prefix=$gliethttp_alsa_lib/include –with-alsa-prefix=$gliethttp_alsa_lib/lib –prefix=$gliethttp_alsa_lib



make;make install


首先我们可以直接将$gliethttp_alsa_lib下的bin,sbin,lib使用cp -a拷贝到嵌入式root根/文件系统,



但是我们不能直接拷贝$gliethttp_alsa_lib到嵌入式根文件系统/根目录下,因为alsa lib中保存了库的



绝对路径信息,amixer或者aplay使用lib库时,lib库会使用绝对地址来访问share共享文件中的配置文件,所以必须



在嵌入式开发板上建立同名的安装时share绝对路径,这样才能正常使用,否则就会提示:



# amixer



ALSA lib conf.c:3601:(snd_config_update_r) Cannot access file /usr/local/alsa/share/alsa/alsa.conf



ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL default



amixer: Mixer attach default error: No such file or directory



随后即便我们设置了ALSA_CONFIG_PATH路径,也不管用了,同样会提示下面的错误log



# export ALSA_CONFIG_PATH=/usr/local/alsa/share/alsa/alsa.conf



# amixer



ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL default



amixer: Mixer attach default error: No such file or directory



# strulpi_dat3_int_set(),dev:c040bbe0



于是我们只能在嵌入式文件系统的根目录下建立同名的$gliethttp_alsa_lib目录,然后将alsa配置文件内容拷贝过去



mkdir -p /vobs/initramfs/$gliethttp_alsa_lib



cp -a $gliethttp_alsa_lib/* /vobs/initramfs/$gliethttp_alsa_lib/



好了一切搞定,alsa lib库安装应该注意的地方也就这么多了[luther.gliethttp]


4. 创建alsa控制节点



mknod /dev/snd/controlC0 c 116 0



5. 创建alsa对应pcm通道节点



a. 查看当前声卡个数



cat /proc/asound/cards



b. 查看该声卡对应的pcm信息



ls /proc/asound/card0



比如输出如下信息:id pcm0c pcm0p pcm1c pcm1p



c. 建立节点



mknod /dev/snd/hwC0D0 c 116 4



mknod /dev/snd/pcmC0D0p c 116 16



mknod /dev/snd/pcmC0D1p c 116 17



mknod /dev/snd/pcmC0D0c c 116 24



mknod /dev/snd/pcmC0D1c c 116 25



mknod /dev/snd/seq c 116 1



mknod /dev/snd/timer c 116 33


程序库下载地址:


http://www.alsa-project.org/main/index.php/Download