基于s3c2440的alsa-lib及alsa-utils成功移植
准备工作alsa-lib版本:alsa-lib-1.0.23.tar.bz2alsa-util版本:alsa-utils-1.0.23.tar.bz2其他版本的alsa-lib和alsa-util不能保证正常工作arm板子:s3c2416板子上linux内核:2.6.xxpc虚拟机:arm-linux-gcc:4.4.6 首先在Ubu
准备工作
alsa-lib版本:alsa-lib-1.0.23.tar.bz2
alsa-util版本:alsa-utils-1.0.23.tar.bz2
其他版本的alsa-lib和alsa-util不能保证正常工作
arm板子:s3c2440
板子上linux内核:2.6.xx
pc虚拟机:arm-linux-gcc:4.4.3
首先在Ubuntu上交叉、编译alsa-lib和alsa-util
1.解压alsa-lib-1.0.23.tar.bz2,进入解压所得目录
2.使用命令
./configure --host=arm-linux --prefix=/home/guazai/alsa --disable-python
3.使用命令
make
编译中遇到 cannot find -lpython2.5,是configuer中没有加 --disable-python
make install
4.解压alsa-utils-1.0.23.tar.bz2,进入解压所得目录
5.使用命令
/configure --host=arm-linux --prefix=/home/alsa CFLAGS="-I/home/alsa/include" LDFLAGS="-L/home/alsa/lib -lasound " --disable-alsamixer --disable-xmlto
--disable-alsamixer表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图形界面库,目前我们对于该库还不能交叉编译,故放弃
make
make install
至此Ubuntu上的工作全部结束
# cd /usr/share/arm-alsa/bin/
# file aplay
显示 aplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.21, not stripped
注意:这就是我们能在arm上运行的小工具格式,最重要的是看arm那里,那里显示arm说明我们的运行环境是在arm上,这正是我们移植的目的,但是如果显示是 Intel 80386,说明我们没有移植成功,问题就是出在我们交叉工具链设置上。
接着要在2440上部署已交叉编译好的alsa-lib和alsa-util
1.将Ubuntu中/home/guazai/alsa下的lib、bin、sbin下的文件cp至2440根文件系统的目录的/lib /bin /sbin下
2.动态库需要一些配置文件,配置文件在/home/guazai/alsa下,开发板的复制路径不是随便设置,必须和主机编译时相同的路径,否则动态库无法找到某些文件
在开发板下建立/home/guazai/alsa路径,将除了lib bin sbin的文件夹拷贝进去
4.编辑$rootfs/etc/init.d/rcS,添加如下几行
- #alsa_init
- mkdir
/dev/snd - ln -s
/dev/controlC0 /dev/snd/controlC0 - ln -s
/dev/pcmC0D0c /dev/snd/pcmC0D0c - ln -s
/dev/pcmC0D0p /dev/snd/pcmC0D0p - ln -s
/dev/timer /dev/snd/timer -
- amixer
cset numid=86 2 - amixer
cset numid=87 2
5.编辑$rootfs/etc/profile,添加如下两行
- #alsa_init
- export
ALSA_CONFIG_PATH=/home/guazai/alsa/share/alsa/alsa.conf
6、如果开机运行后,你输入
# 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
或者和上面的信息类似,那说明我们copy的配置信息据对路径不对,根据提示信息建相应的文件夹,把我们生成相应配置信息cp进去,逐步尝试,(会有好几次错误提示,和上面的作法一样)
知道最后可以成功运行,打工造成,移植成功!~
更多推荐
所有评论(0)