移植alsa-utils 带 alsamixer

准备工作

ncurses-6.0.tar.gz
alsa-lib-1.2.2.tar.bz2
alsa-utils-1.2.2.tar.bz2

相关依赖移植参考

移植ncurses参考
移植alsa-lib参考

配置&编译&安装

1. 解压

tar jxvf alsa-utils-1.2.2.tar.bz2

2. 配置

注意

  1. < install-dir > 按实际填写绝对路径
  2. < arm-alsalib-dir > 按实际填写绝对路径
  3. < arm-ncursesw-dir > 按实际填写绝对路径
  4. –with-systemdsystemunitdir 和 --with-udev-rules-dir 是用于有systemd和udev机制的系统中,若不需要加入到systemd和udev,那就不需要理会,这里填写只是为了后面 make install 的时候不用加 sudo来执行
./configure \
--host=arm-linux-gnueabihf \
--prefix=/arm_alsautils \
--with-systemdsystemunitdir=/arm_alsautils/systemd  \
--with-udev-rules-dir=/arm_alsautils/udev-rules \
--with-alsa-inc-prefix=/include/ \
--with-alsa-prefix=/lib/ \
--disable-xmlto \
NCURSESW_CFLAGS="`/bin/ncursesw6-config --cflags`" \
NCURSESW_LIBS="`/bin/ncursesw6-config --libs`"

3. 编译&安装

make
make install

4. 目标环境配置

在移植alsa-lib时,当configure里面的–with-configdir 指定路径和实际运行环境路径不同那就要指定以下两个环境变量,在/etc/profile里追加

#file path: /etc/profile
export ALSA_CONFIG_DIR=/usr/share/arm-alsa/
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf

5. 拷贝文件至开发板

//cd arm_alsautils
mkdir -p ~/nfs/rootfs/usr/share
cp -arf bin/*          ~/nfs/rootfs/usr/bin
cp -arf sbin/*         ~/nfs/rootfs/usr/sbin
cp -arf share/*        ~/nfs/rootfs/usr/share

X. 常见错误

configure: error: required curses helper header not found

没找到ncursesw库,最有可能的原因就是移植ncurses库的时候,
configure没有添加--enable-widec 选项,导致编译出来的库只有 libncurses.so
没有 libncursesw.so,这时候只能重新回去编译ncurses源码了

ALSA lib conf.c:4081:(snd_config_update_r) Cannot access file

没有找到配置文件的路径,在 /etc/profile 追加
export ALSA_CONFIG_DIR=/usr/share/arm-alsa/
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf

(snd_config_hook_load) cannot stat file/directory

没有找到配置文件的路径,在 /etc/profile 追加
export ALSA_CONFIG_DIR=/usr/share/arm-alsa/
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf

alsactl: state_lock:125: file /var/lib/alsa/asound.state lock error: No such file or directory

是因为路径 /var/lock 不存在,导致无法创建锁。
mkdir -p /var/lock 即可解决

configure 一些说明

--host= #交叉编译工具链前缀
--prefix= #安装路径
--with-systemdsystemunitdir= #systemd 配置文件安装路径 
--with-udev-rules-dir= #udev 配置文件安装路径 
--with-alsa-inc-prefix= #arm-alsalib 头文件路径
--with-alsa-prefix= #arm-alsalib 库文件路径
--disable-xmlto 
NCURSESW_CFLAGS= #ncursesw 头文件路径
NCURSESW_LIBS= #ncursesw 库文件路径

你可能感兴趣的:(填坑日记,linux,alsa-utils)