准备工作
ncurses-6.0.tar.gz
alsa-lib-1.2.2.tar.bz2
alsa-utils-1.2.2.tar.bz2
详细移植参考
开始移植
tips:以下提到的< xxx-dir > 请自行按实际安装的目录添加,且路径都是绝对路径
ncurses 库
配置
### cross-compile to ncursesw (libncursesw.so.6.0)
./configure --host=arm-linux-gnueabihf \
--prefix=<install-dir>/arm_ncurses_w \
--target=arm-linux-gnueabihf \
--with-shared \
--without-profile \
--disable-stripping \
--without-progs \
--with-manpages \
--without-tests \
--enable-widec
安装
make
make install
alsa-lib 库
配置
./configure \
--host=arm-linux-gnueabihf \
--prefix=<install-dir>/arm_alsalib \
--with-configdir=<install-dir>/arm_alsalib_config
安装
make
make install
alsa-utils 库
配置
./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`"
安装
make
make install
开发板环境配置
# file path: /etc/profile
#! /bin/sh
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
export TERM=vt100
export TERMINFO=/usr/share/terminfo
export ALSA_CONFIG_DIR=/usr/share/arm-alsa/
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf
重启开发板,Enjoy It
常见问题
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
即可解决
Error opening terminal vt100
没有在 etc/profile
指定TERM的环境变量,在该文件下追加以下语句
export TERM=vt100
export TERMINFO=/usr/share/terminfo