开源mp3播放器--madplay 编译和移植 简记

madplay是一款开源的mp3播放器。php

http://madplay.sourcearchive.com/html

下面简单记录一下madplay的编译与移植到ARM开发板上的过程

1、编译x86版本的madplay

编译madplay须要用到三个库  zlib-1.2.8  libid3tag-0.15.1b  libmad-0.15.1b (最后面有文件下载地址)linux

 

首先建立一个公共库文件目录测试

#mkdir /_install (目录地址随意,只要和下面可以都对应起来就行)字体

zlib       http://www.zlib.net/spa

解压源码,进入目录.net

#cd zlib-1.2.8代理

#./configure --prefix=/_install  (公共库文件目录)htm

#make && make installip

Libid3tag  http://cblfs.cross-lfs.org/index.php/Libid3tag(要代理才能上,若是不会代理能够用下面提供的地址下载)

解压源码,进入目录

#cd libid3tag-0.15.1b

#./configure --prefix=/_install  (公共库文件目录)

#make && make install

libmad  http://www.linuxfromscratch.org/blfs/view/6.3/multimedia/libmad.html

解压源码,进入目录

#cd libmad-0.15.1b

#./configure --prefix=/_install  (公共库文件目录)

#make

出现错误提示:cc1: error: unrecognized command line option "-fforce-mem"

解决办法是修改Makefile文件

#vi Makefile 

将第129行中的  -fforce-mem  删除,从新make && make install 便可

上面的工做主要是获得编译madplay所须要的库文件和头文件,编译结束后会在/_install目录下产生include lib 等目录,下面的工做要用到这两个目录

madplay编译

解压源码,进入目录

#cd madplay-0.15.2b

#mkdir _install

#./configure --prefix=/${PWD}/_install CPPFLAGS=-I/_install/include LDFLAGS=-L/_install/lib  

(指定编译须要的头文件目录和链接须要的库文件目录,品红色字体目录即为前面提到的公共库文件目录)

配置成功后

#make && make install 

编译安装成功后进入_install 目录,

#ls (内容以下)

#bin man share

进入bin目录便可看见madplay可执行文件

#./madplay test.mp3 (便可测试mp3播放)

 

2、将madplay播放器移植到arm开发板中

先将公共库文件目录里面的东西全删除

#cd /_install 

#rm * -rf

而后进入目录 zlib-1.2.8

#cd zlib-1.2.8

#make distclean 

#./configure --prefix=/_install

#vi Makefile

将19行改成以下 CC=arm-linux-gcc   (原来是 CC=gcc)

将30行给位以下 LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map  (原来是 LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map)

保存退出,而后编译安装

#make && make install

 

进入 目录 libid3tag-0.15.1b

#cd libid3tag-0.15.1b

#make distclean

#./configure --prefix=/_install --host=arm-linux (指定目标板)

#make && make install

 

进入目录 libmad-0.15.1b

#cd libmad-0.15.1b

#make distclean

#./configure --prefix=_install/ --host=arm-linux

#vi Makefile

将第129行中的  -fforce-mem  删除,从新make && make install 便可

#make && make install

 

进入目录 madplay-0.15.2b

#cd madplay-0.15.2b

#make distclean

#./configure --prefix=/${PWD}/_install --host=arm-linux  CPPFLAGS=-I/_install/include LDFLAGS=-L/_install/lib  

#make && make install

make 成功后会在当前目录下的_install目录下产生安装结果

#cd _install

#ls 

bin man share

#cd bin 

#ls

abxtest madplay

可使用file命令查看madplay文件的属性

#file madplay 

madplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped

这样编译出来的二进制文件是动态链接而成的,若是下载到开发板运行,会提示不少库文件找不到。。。

固然能够把全部的须要用到的库文件下载到开发板,可是这样可能比较麻烦,比较简单的方法是使用静态链接的方法。

#rm madplay -f

拷贝make的最后一个链接的命令,在最后加上-static 和 -lz,而后运行,获得静态链接的程序,以下:
#arm-linux-gcc -Wall -O2 -fomit-frame-pointer -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_oss.o  -lmad -lid3tag -lm -lz -static

链接获得的二进制文件在当前目录下

#file madplay

madplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped

能够看到madplay播放器是使用静态链接而成的。

拷贝到开发板就不会有库文件找不到的问题了!

 

所用到的文件下载传送门

madplay_0.15.2b.orig.tar.gz  http://download.csdn.net/detail/qin1174586290/6364773

libmad-0.15.1b.tar.gz  http://download.csdn.net/detail/qin1174586290/6364767

libid3tag-0.15.1b.tar.gz  http://download.csdn.net/detail/qin1174586290/6364763

zlib-1.2.8.tar.gz  http://download.csdn.net/detail/qin1174586290/6364757

相关文章
相关标签/搜索