又是一篇公司技术文档啦! 如你们看了我的技术文档,去Genny杭州半导体面试或许很有优势哦
移植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:///project/showfiles.php?group_id=12349 zlib-1.1.4.tar.gz (zlib-1.2.3.tar.gz类似)的下载地址为:http://www./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"} 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: CC=/usr/local/arm-uclinux-tools/bin/arm-uclinux-elf-gcc ./configure --host=arm-uclinux-elf --prefix=/root/madplayer/libz --disable-shared 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: CC=/usr/local/arm-uclinux-tools/bin/arm-uclinux-elf-gcc ./configure --host=arm-uclinux-elf --prefix=/root/madplayer/libz –disable-shared 然后使用:make,生成所需的库文件; 最后使用:make install 完成libmad-0.15.1b 的编译。
5、 编译madplay-0.15.2b 配置Makefile: CC=/usr/local/arm-uclinux-tools/bin/arm-uclinux-elf-gcc ./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)是否有足够快速强大的运算能力也是个问题。 |
|