一:madplay的移植
madpaly 是linux上的一个开源MP3播放器,是一个高精度MPEG音频解码器。支持MPEG-1 Layer,Layer II 和Layer III(也就是MP3)标准,利用libmad库进行MP3解码。
首先需要找到一下几个tar包
zlib-1.2.3.tar.tar用于文件的压缩和解压
libid3tag-0.15.1b.tar.gz mp3的解码库
libmad-0.15.1b.tar.gz madplay的库文件
madplay-0.15.2b.tar.gz 播放程序的压缩包,mp3播放器的源码
在ubuntu下新建文件夹tmp,作为安装的目录
依次解压以上4个tar包
1.安装zlib(libid3tag依赖这个库文件)
用交叉编译工具编译zlib,并且把库生成到交叉编译环境的库目录下
./configure --prefix=/home/chi/work/wm8976/tmp
修改zlib目录下的Makefile.文件,按以下内容修改并保存
CC=arm-linux-gcc
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
Prefix=/home/chi/work/wm8976/tmp
make
make install
安装完成后,在/tmp/ 中将生产lib跟include2个文件夹
2.编译libid3tag
./configure --host=arm-linux --prefix=/home/chi/work/wm8976/tmp LDFLAGS="-L/home/chi/work/wm8976/tmp/lib" CFLAGS="-I/home/chi/work/wm8976/tmp/include"
make
make install
–host指明库运行的环境arm-linux;–prefix,CFLAGS,LDFLAGS指定库文件路径
3.编译libmad
./configure --host=arm-linux --prefix=/home/chi/work/wm8976/tmp LDFLAGS="-L/home/chi/work/wm8976/tmp/lib" CFLAGS="-I/home/chi/work/wm8976/tmp/include"
make
问题1: error: unrecognized command line option “-fforce-mem”
解决办法:用vi编辑器打开已经过配置生成的Makefile删除其中的"fforce-mem"即可,重新make
make install
4.编译madplay
./configure --host=arm-linux --prefix=/home/chi/work/wm8976/tmp LDFLAGS="-L/home/chi/work/wm8976/tmp/lib" CFLAGS="-I/home/chi/work/wm8976/tmp/include"
make
make install
5.移植到nfs文件系统
cp bin/* /home/chi/fs/bin
cp lib/so /home/chi/fs/lib -d (//-d带链接复制)
移植完成
二:使用madplay播放mp3
拷贝一个MP3文件到开发板文件系统。
运行 madplay --tty-control /xx.mp3
./madplay 1.mp3 2.mp3 3.mp3 //循环播放3首歌
并可以使用热键来控制,常用的有以下几种:
f 下一首
b 下一首
i 获取播放时间和播放歌曲名
p 播放暂停
s 停止
+ 音量加
- 音量减
三:
移植过程中可能出现问题
1.配置libid3tag-0.15.1b时错误信息(一):
checking zlib.h usability… no
checking zlib.h presence… no
checking for zlib.h… no
configure: error: zlib.h was not found
*** You must first install zlib (libz) before you can build this package.
*** If zlib is already installed, you may need to use the CPPFLAGS
*** environment variable to specify its installed location, e.g. -I
从上面的错误信息提示,可以知道要安装zlib库。或没没有正确配置编译好zlib 导致的,如果要正确配置,参考步骤1,CC=arm-linux-gcc,这个很重要,这样后面的在当前的shell中的默认都是arm-linux-gcc编译了。
2:编译libmad遇到问题
问题1: error: unrecognized command line option “-fforce-mem”
解决办法:用vi编辑器打开已经过配置生成的Makefile删除其中的"fforce-mem"即可
原因:4.3以后的gcc版本删除胃"-fforce-mem"命令