分享

移植madplay的过程

 guitarhua 2012-11-10

又是一篇公司技术文档啦!

如你们看了我的技术文档,去Genny杭州半导体面试或许很有优势哦

 

 

移植madplay 需要如下文件:madplay-0.15.2b.tar.gzlibmad-0.15.1b.tar.gzlibid3tag-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、配置编译环境

我们使用的是装有VmwareRedHat开发环境,交叉编译器放/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的可执行文件放到romfsbin目录下,用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)是否有足够快速强大的运算能力也是个问题。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多