开源mp3播放器--madplay 编译和移植 简记
madplay是一款开源的mp3播放器。
http://madplay.sourcearchive.com/
下面简单记录一下madplay的编译与移植到ARM开发板上的过程
一、编译x86版本的madplay
编译madplay需要用到三个库 zlib-1.2.8 libid3tag-0.15.1b libmad-0.15.1b (最后面有文件下载地址)
首先创建一个公共库文件目录
#mkdir /_install (目录地址随意,只要和下面能够都对应起来就行)
zlib http://www.zlib.net/
解压源码,进入目录
#cd zlib-1.2.8
#./configure --prefix=/_install (公共库文件目录)
#make && make install
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播放)
二、将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
开源mp3播放器--madplay 编译和移植 简记的更多相关文章
- 嵌入式mp3播放器
分四部分:按键驱动,声卡驱动,Madplay播放器移植,MP3主播放器处理 按键1:播放,按键2:停止,按键3:上一曲,按键4:下一曲 UA1341内核自带声卡驱动 .解压内核: tar zxvf l ...
- C# wave mp3 播放器探寻
C# wave mp3 播放器探寻 最近无聊,想听听歌曲.可怜新电脑上歌曲就两三首,要听其它的就得在旧电脑上播放.可是,那台古董但不失健壮的本本被老婆无情的霸占了.无奈. 思来想去,得,写个程序播 ...
- x宝23大洋包邮的老式大朝华MP3播放器简单评测
(纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...
- 基于GStreamer编写Mp3播放器
一.简介 作者系统为CentOS6,本文在此基础上对Mp3播放器进行开发,需要使用mp3解码库libmad和gstreamer0.10-plugins-ugly,详细步骤如下. 二.操作步骤 1) ...
- Arava: 写一个控制台风格的Mp3播放器
Mp3播放器 来写一个控制台版的mp3播放器.以前很喜欢 cmd.fm 这种控制台风格的播放器. 播放mp3使用 mp3spi 库:下载mp3spi库文件,解压,拿出根目录下的 mp3spi1.9.5 ...
- MP3播放器团队项目
一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...
- 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载
I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...
- 你用java的swing可以做出这么炫的mp3播放器吗?
这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...
- MP3播放器的实现
今天,基本上实现了MP3播放器的基本功能,现在总结一下. 首先,下载服务器端的MP3列表,这里用到了下载技术和解析XML文件技术. 下载参考(http://blog.csdn.net/huim_lin ...
随机推荐
- UVA 10317 - Equating Equations (背包)
Problem F Equating Equations Input: standard input Output: standard output Time Limit: 6 seconds Mem ...
- WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果?
原文:WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果? 我们想对WCF具有一定了解的人都会知道:在客户端通过服务调用进行服务调用过程中,服务代理应该及时关闭.但是如果服务的代理不等得到及时的 ...
- C++智能指针的实现
说起智能指针,不少人都不陌生.比方auto_ptr.shared_ptr.unique_ptr.weak_ptr. 依据shared_ptr的功能,自己仿造也实现了个. 对于shared_ptr这样的 ...
- ubuntu下使用charles代理
charles 最新的版本是3.10,但是这个版本还没有license可以用,所以使用3.9.2版本. 解压缩包就可以用了. 如果只是代理http请求,只要设置: Proxy -> Proxy ...
- 服务确定(服务类收货ML81N)
FUNCTION zrfc_mm005. *"---------------------------------------------------------------------- * ...
- MFC类中获得其它类指针
当用VC++的Application Wizard生成除了CDialog Basiced以外的应用程序时,将自动产生视图类.文档类.主帧窗口类.应用程序类等等.一般来说,程序的核心数据及操作在文档类中 ...
- 聊天气泡的绘制(圆角矩形+三角形+黑色边框,关键学会QPainter的draw函数就行了),注意每个QLabel都有自己的独立坐标
头文件: #ifndef GLABEL_H #define GLABEL_H #include <QLabel> #include <QPainter> #include &l ...
- C语言总结之---关键字
我记得我开始学习C语言的时候,那时候还在读高中,我们老师就把C语言的关键字,全部写在黑板上,老师说我们下面的两节课的内容就是(把它给记下来) 你还记得标准C有多少个关键字吗? 第一:关键字描述 C99 ...
- Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)
游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 ...
- Android KitKat 4.4 Wifi移植之Wifi driver
本文讲述在Linux 3.10下Realek RTL8723A Linux Wifi 驱动的移植. Prerequisites 硬件平台:Atmel SAMA5 软件平台:Linux 3.10 + A ...