本文转载,地址:http://blog.mcuol.com/User/allenwoo/Article/6754_1.htm,版权问题,马上删除
移植madplay 需要如下文件:madplay-0.15.2b.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz 和 zlib-1.2.3.tar.gz。
这里列出它们的下载地址:前三个文件的下载地址在这个网站可以找到相应的链接:http://sourceforge.net/project/showfiles.php?group_id=12349
zlib-1.1.4.tar.gz (zlib-1.2.3.tar.gz类似)的下载地址为:http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
1、配置编译环境
我们使用的是装有Vmware的RedHat开发环境,交叉编译器放/usr/local/arm-uclinux-tools/bin/目录下的。首先在根目录下面建立了一个名为“madplayer”的目录,然后把四个gz都解压到这个目录下面,同时还建立了一个名为“libz”的目录,作为存放所生成的文件的地方,总共在/madplayer目录下,有5 个目录。
[root@localhost madplayer]# ls
libid3tag-0.15.1b libmad-0.15.1b libz madplay-0.15.2b zlib-1.2.3
[root@localhost madplayer]#
2、 编译zlib-1.2.3
首先配置configure 文件,改动如下:
u 把AR=${AR-" ar rc"}改为:
AR=${AR-"/usr/local/arm-uclinux-tools/bin/arm-uclinux-elf-ar rcs"}
实际上arm-linux的话,写成
AR=${AR-"arm-linux-ar rc"}
下面同理
u 把RANLIB=${RANLIB-"ranlib"}改为:
RANLIB=${RANLIB-"/usr/local/arm-uclinux-tools/bin/arm-uclinux-elf-ranlib"}
u 把cc=${CC-gcc}改为:
cc=${CC-/usr/local/arm-uclinux-tools/bin/arm-uclinux-elf-gcc}
u 然后保存它,使用如下指令编译:
如果之前编译过,则先要把上次编译的结果清除:make distclean
然后输入:./configure --prefix=/root/madplayer/libz
待上步完成后,输入:make
然后再输入:make install
到此,编译zlib-1.2.3 就算完成了。
3、 编译libid3tag-0.15.1b
在完成zlib-1.1.4 的编译后,才能进行libid3tag-0.15.1b 的编译。
配置Makefile:
./configure --host=arm-uclinux-elf --prefix=/root/madplayer/libz --disable-shared
arm-linux的话,写成--host=arm-linux即可,下面同理
CPPFLAGS=-I/root/madplayer/libz/include
LDFLAGS=-L/root/madplayer/libz/lib;
然后使用:make,
最后使用:make install 完成libid3tag-0.15.1b 的编译。
4、 编译libmad-0.15.1b
配置Makefile:
./configure --host=arm-uclinux-elf --prefix=/root/madplayer/libz –disable-shared
然后使用:make,生成所需的库文件;
最后使用:make install 完成libmad-0.15.1b 的编译。
5、 编译madplay-0.15.2b
配置Makefile:
./configure --host=arm-uclinux-elf --prefix=/root/madplayer/libz --disable-shared --enable-static CPPFLAGS=-I/root/madplayer/libz/include
LDFLAGS=-L/root/madplayer/libz/lib;
然后使用:make,最后在madplay-0.15.2b 目录下面生成大小为617KB 的madplay的可执行文件。
6、 然收把madplay的可执行文件放到romfs的bin目录下,用genromfs工具形成romfs.img文件,烧到开发板。就可以正常的播放MP3 歌曲了。
缺省格式:madplay /yourname/*.mp3
7、 编译中,可能遇到的问题:
u 如果出现这样的错误提示:
error: libz 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 LDFLAGS
*** environment variable to specify its installed location, e.g. -L
则是没有正确配置编译好zlib 导致的,如果要正确配置,参考步骤2。
u 最后编译出来的mdaplay 在开发板上运行时出现如下所示的提示:
madplay: error while loading shared libraries: cannot open shared object file: cannot load sharedobject file: No such file or directory
则是因为在编译时没有设置好静态链接和共享库,正确的配置就是在编译,libid3taglibmad 和madplay 时,加上disable-shared 选项,同时在madplay 的配置语句上加上enable-static设置为静态。
总结:关于madplayer播放器,虽然MAD is a high-quality MPEG audio decoder,支持MPEG-1,MPEG-2, All three audio layers— Layer I, Layer II, and Layer III (i.e. MP3),但是,由于其强大的功能,带来的是占用较大资源。另外,基于ARM7TFMI的音频处理器(GE9008)是否有足够快速强大的运算能力也是个问题。
.