madplay移植-交叉编译

本文转载,地址:http://blog.mcuol.com/User/allenwoo/Article/6754_1.htm,版权问题,马上删除

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

我们使用的是装有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"}

实际上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的可执行文件放到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)是否有足够快速强大的运算能力也是个问题。

.

你可能感兴趣的:(vmware,redhat,File,makefile,audio,编译器)