mp3播放器madplay 移植过程详解
说明:网上也有很多类似的博客文章,我也是参考他们来的,所以若是过程中有出错,最好的解决办法是上网百度,因为其中涉及很多环境、源码版本不同等情况。这里编译的是arm下的madplay。
其实下面的过程有点不好,尝试先编译安装madplay,看看出现什么错误,然后对应解决。要不然移植的精华都没有了。
一、我的移植环境
linux操作系统:ubuntu 14.04
交叉编译工具链:arm-2009q3
二、资料准备
madplay-0.15.0b.tar
libid3tag-0.15.0b.tar
libmad-0.15.0b.tar
下载地址:https://sourceforge.net/projects/mad/files/
zlib-1.2.3.tar
直接在网上搜
三、移植过程(我的路径:/root/experiment/madplay/)
1、创建文件夹 mkdir tarball src-arm target-arm
把四个压缩包放到tarball下
2、解压(cd tarball)
tar -zxvf madplay-0.15.0b.tar -C /root/experiment/madplay/src-arm/
tar -zxvf libid3tag-0.15.0b.tar -C /root/experiment/madplay/src-arm/
tar -zxvf libmad-0.15.0b.tar -C /root/experiment/madplay/src-arm/
tar -zxvf zlib-1.2.3.tar -C /root/experiment/madplay/src-arm/
3、编译安装zlib
(1)进到解压后zlib对应的源码文件夹下
(2)设置所用的编译器以进行交叉编译:export CC=arm-linux-gcc
(3)配置:./configure --prefix=/root/experiment/madplay/target-arm/
(4)编译:make
看打印信息是否是arm-linux-gcc
(5)make install
4、编译安装libid3tag
(1)进到解压后libid3tag对应的源码文件夹下
(2)配置:./configure --host=arm-linux --prefix=/root/experiment/madplay/target-arm/ CPPFLAGS=-I/root/experiment/madplay/target-arm/include/ LDFLAGS=-L/root/experiment/madplay/target-arm/lib/
(3)检查是否有checking whether we are cross compiling... yes
(4)编译:make
(5)make install
5、编译安装libmad
(1)进到解压后libmad对应的源码文件夹下
(2)配置:./configure --host=arm-linux --prefix=/root/experiment/madplay/target-arm/
cc1: error: unrecognized command line option "-fforce-mem"
vi Makefile
注释掉有-fforce-mem的那句
(3)检查是否有checking whether we are cross compiling... yes
(4)编译:make
(5)make install
6、编译安装madplay
(1)进到解压后madplay对应的源码文件夹下
(2)配置:./configure --host=arm-linux --prefix=/root/experiment/madplay/target-arm/ CPPFLAGS=-I/root/experiment/madplay/target-arm/include/ LDFLAGS=-L/root/experiment/madplay/target-arm/lib/
(3)检查是否有checking whether we are cross compiling... yes
(4)编译:make
(5)make install
7.把编译生成的有关问价放到板子上
(1)libid3tag.so.0.2.0和libmad.so.0.2.0 在 target-arm/lib/
madplay 在 target-arm/bin/
(2)修改名字
libid3tag.so.0.2.0 改成 libid3tag.so.0
libmad.so.0.2.0 改成 libmad.so.0
(3)libid3tag.so.0和libmad.so.0放到/lib目录下
madplay 根据自己需要放
8、测试
(1)./madplay faded.mp3
出现错误:MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al.
audio: /dev/dsp: No such file or directory
(2)处理方法1:
是声卡和madplay不兼容,网上有文章讲到,搜:audio: /dev/dsp: No such file or directory
命令改为:
./madplay -o wav:- faded.mp3| aplay
(3)处理方法2:重新编译内核使其支持OSS
<*>Device Drivers--->
<*>sound card support --->
<*>advanced linux soune architecture -->
<*>OSS Mixer API
<*>OSS PCM (digital audio) API
说明:网上也有很多类似的博客文章,我也是参考他们来的,所以若是过程中有出错,最好的解决办法是上网百度,因为其中涉及很多环境、源码版本不同等情况。这里编译的是arm下的madplay。
其实下面的过程有点不好,尝试先编译安装madplay,看看出现什么错误,然后对应解决。要不然移植的精华都没有了。
一、我的移植环境
linux操作系统:ubuntu 14.04
交叉编译工具链:arm-2009q3
二、资料准备
madplay-0.15.0b.tar
libid3tag-0.15.0b.tar
libmad-0.15.0b.tar
下载地址:https://sourceforge.net/projects/mad/files/
zlib-1.2.3.tar
直接在网上搜
三、移植过程(我的路径:/root/experiment/madplay/)
1、创建文件夹 mkdir tarball src-arm target-arm
把四个压缩包放到tarball下
2、解压(cd tarball)
tar -zxvf madplay-0.15.0b.tar -C /root/experiment/madplay/src-arm/
tar -zxvf libid3tag-0.15.0b.tar -C /root/experiment/madplay/src-arm/
tar -zxvf libmad-0.15.0b.tar -C /root/experiment/madplay/src-arm/
tar -zxvf zlib-1.2.3.tar -C /root/experiment/madplay/src-arm/
3、编译安装zlib
(1)进到解压后zlib对应的源码文件夹下
(2)设置所用的编译器以进行交叉编译:export CC=arm-linux-gcc
(3)配置:./configure --prefix=/root/experiment/madplay/target-arm/
(4)编译:make
看打印信息是否是arm-linux-gcc
(5)make install
4、编译安装libid3tag
(1)进到解压后libid3tag对应的源码文件夹下
(2)配置:./configure --host=arm-linux --prefix=/root/experiment/madplay/target-arm/ CPPFLAGS=-I/root/experiment/madplay/target-arm/include/ LDFLAGS=-L/root/experiment/madplay/target-arm/lib/
(3)检查是否有checking whether we are cross compiling... yes
(4)编译:make
(5)make install
5、编译安装libmad
(1)进到解压后libmad对应的源码文件夹下
(2)配置:./configure --host=arm-linux --prefix=/root/experiment/madplay/target-arm/
cc1: error: unrecognized command line option "-fforce-mem"
vi Makefile
注释掉有-fforce-mem的那句
(3)检查是否有checking whether we are cross compiling... yes
(4)编译:make
(5)make install
6、编译安装madplay
(1)进到解压后madplay对应的源码文件夹下
(2)配置:./configure --host=arm-linux --prefix=/root/experiment/madplay/target-arm/ CPPFLAGS=-I/root/experiment/madplay/target-arm/include/ LDFLAGS=-L/root/experiment/madplay/target-arm/lib/
(3)检查是否有checking whether we are cross compiling... yes
(4)编译:make
(5)make install
7.把编译生成的有关问价放到板子上
(1)libid3tag.so.0.2.0和libmad.so.0.2.0 在 target-arm/lib/
madplay 在 target-arm/bin/
(2)修改名字
libid3tag.so.0.2.0 改成 libid3tag.so.0
libmad.so.0.2.0 改成 libmad.so.0
(3)libid3tag.so.0和libmad.so.0放到/lib目录下
madplay 根据自己需要放
8、测试
(1)./madplay faded.mp3
出现错误:MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 2000-2003 Robert Leslie et al.
audio: /dev/dsp: No such file or directory
(2)处理方法1:
是声卡和madplay不兼容,网上有文章讲到,搜:audio: /dev/dsp: No such file or directory
命令改为:
./madplay -o wav:- faded.mp3| aplay
(3)处理方法2:重新编译内核使其支持OSS
<*>Device Drivers--->
<*>sound card support --->
<*>advanced linux soune architecture -->
<*>OSS Mixer API
<*>OSS PCM (digital audio) API