准备工作
ncurses-6.0.tar.gz
alsa-lib-1.2.2.tar.bz2
alsa-utils-1.2.2.tar.bz2
相关依赖移植参考
配置&编译&安装
1. 解压
tar jxvf alsa-utils-1.2.2.tar.bz2
2. 配置
注意
- < install-dir > 按实际填写绝对路径
- < arm-alsalib-dir > 按实际填写绝对路径
- < arm-ncursesw-dir > 按实际填写绝对路径
- –with-systemdsystemunitdir 和 --with-udev-rules-dir 是用于有systemd和udev机制的系统中,若不需要加入到systemd和udev,那就不需要理会,这里填写只是为了后面 make install 的时候不用加 sudo来执行
./configure \
--host=arm-linux-gnueabihf \
--prefix=<install-dir>/arm_alsautils \
--with-systemdsystemunitdir=<install-dir>/arm_alsautils/systemd \
--with-udev-rules-dir=<install-dir>/arm_alsautils/udev-rules \
--with-alsa-inc-prefix=<arm-alsalib-dir>/include/ \
--with-alsa-prefix=<arm-alsalib-dir>/lib/ \
--disable-xmlto \
NCURSESW_CFLAGS="`<arm-ncursesw-dir>/bin/ncursesw6-config --cflags`" \
NCURSESW_LIBS="`<arm-ncursesw-dir>/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 库文件路径