播放器

MP3播放器移植(二)

                                                       MP3播放器移植(二)

                                                                                   2010-12-22

                                                                                            靳玉斌

4.    播放器移植

1)   在根目录如下文件/opt/FriendlyARM/下建立mini2440,并在mini2440文件夹下建立madplay,再在madpalay文件夹下建立四个文件夹tarball src-x86 src-arm target-arm

(#cd /opt/FriendlyARM/)

(# mkdir mini2440)

(#cd mini2440)

(#mkdir madplay)

(#cd madplay)

(#mkdir  tarball src-x86 src-arm target-arm)

2)把压缩包madplay-0.15.2b.tar.gz  libid3tag-0.15.1b.tar.gz  libmad-0.15.1b.tar.gz放入/opt/FriendlyARM/ mini2440/ madplay/ tarball

(#cp madplay-0.15.2b.tar.gz  libid3tag-0.15.1b.tar.gz  libmad-0.15.1b.tar.gz  /opt/FriendlyARM/ mini2440/ madplay/ tarball )

3)        解压缩源代码madplay-0.15.2b.tar.gz  libid3tag-0.15.1b.tar.gz  libmad-0.15.1b.tar.gz

(#cd /opt/FriendlyARM/ mini2440/ madplay/ tarball)

(#for f in $(ls *.tar.gz); do tar xvzf $f –C ../src-x86 ; done)

4)编译madplay所依赖的库文件

a) libid3tag

(#cd /opt/FriendlyARM/mini2440/madplay/src-x86/libid3tag-0.15.1b)

(#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86)

(#make)

(#make install)

b) libmad

(#cd /opt/FriendlyARM/mini2440/madplay/src-x86/libmad-0.15.1b)

(#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86)

(#make)

(#make install)

由于gcc版本问题需要删除/opt/FriendlyARM/mini2440/madplay/target-x86/ libmad-0.15.1b/ Makefile文件中的"-fforce-mem"字符串

(#cd  /opt/FriendlyARM/mini2440/madplay/target-x86/ libmad-0.15.1b/)

(#gedit Makefile)

以上过程完毕,将在target-x86目录出现编译madplay所依赖的库文件和头文件。

c)编译安装madplay

(#cd /opt/FriendlyARM/mini2440/madplay/src-x86/ madplay-0.15.2b)

(#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86)

将会出现如图错误:

提示我们在配置madplay之前要先安装libmad,因为我们之前已经编译并安装了依赖库,根据提示我们要设置CPPFLAGS环境变量,采用如下参数重新配置:

 

(#cd /opt/FriendlyARM/mini2440/madplay/src-x86/ madplay-0.15.2b)

(#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86 CPPFLAGS=-I/opt/FriendlyARM/mini2440/madplay/target-x86/include)

运行结果如图所示:

设置LDFLAGS环境变量,因此再次修改配置参数如下

(#cd /opt/FriendlyARM/mini2440/madplay/src-x86/ madplay-0.15.2b)

(#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86 CPPFLAGS=-I/opt/FriendlyARM/mini2440/madplay/target-x86/include LDFLAGS=-L/opt/FriendlyARM/mini2440/madplay/target-x86/lib)

执行成功结果如下:

这说明配置已经成功,生成了编译所需要的Makefile文件,输入一下命令开始编译安装:

(#make)

(#make install)

执行完毕,可执行文件将被安装在我们指定的目录

/opt/FriendlyARM/mini2440/madplay/target-x86目录中:

(#cd /opt/FriendlyARM/mini2440/madplay/target-x86 )

(#ls bin)

abxtest madplay

其中abxtest是附加生成的测试程序,不必理会。

5、测试PC版的madplay

拷贝一首mp3文件到/opt/FriendlyARM/mini2440/madplay/target-x86/bin

执行:(#./madplay test.mp3)

注意:虚拟机中执行的文件夹为(/opt/FriendlyARM/mini2440/madplay/target-x86)

开发板中执行的文件夹为

(/opt/FriendlyARM/mini2440/madplay/target-arm)

此时在PC机上就可以听到音乐

6、构建并修正ARM版本的编译脚本build-arm

既然我们已经构建了一个简单易用的编译脚本,现在就可以通过对它稍作修改来进行交叉编译了,这就是通常所说的移植。简单的移植只要重新指定一下编译器就可以了,可以通过修改环境变量来实现。很多的移植所要修改的环境变量是

CC编译器,系统默认为gcc,AR库工具,用以创建和修改库,系统默认ar

LD链接器,系统默认为LDRANLIB随机库创建器,系统默认为ranlibAS汇编器,系统默认为asNM库查看工具,系统默认为nm还有一些不常用的其他环境变量,在此就不一一列举了。

需要注意的是,并不是每个移植都需要做全面的环境变量修改,有些是不需要改的,这要根据实际情况,也就是系统提示信息来调整。除了要修改编译器环境变量,一般还需要在配置中加入目标平台指定标识,在此为“arm-linux”,修改后的脚本如下:(将脚本放在/opt/FriendlyARM/mini2440/madplay下)

(#cd  /opt/FriendlyARM/mini2440/madplay)

(#vi  jiaoben)

#!/bin/sh

MADPLAY_DIR=/opt/FriendlyARM/mini2440/madplay

SRC_DIR=src-arm

TARGET_DIR=$MADPLAY_DIR/target-arm

tar xvzf ./tarball/libid3tag-0.15.1b.tar.gz -C $SRC_DIR

tar xvzf ./tarball/libmad-0.15.1b.tar.gz -C $SRC_DIR

tar xvzf ./tarball/madplay-0.15.2b.tar.gz -C $SRC_DIR

tar xvjf ./tarball/zlib-1.2.5.tar.bz2 -C $SRC_DIR

export CC=arm-linux-gcc

cd $SRC_DIR/zlib-1.2.5

./configure --prefix=$TARGET_DIR

make && make install

cd ../..

cd $SRC_DIR/libid3tag-0.15.1b

./configure --host=arm-linux --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/include

LDFLAGS=-L$TARGET_DIR/lib

make;make install

cd ../../

cd $SRC_DIR/libmad-0.15.1b

./configure --host=arm-linux --prefix=$TARGET_DIR

make;make install

cd ../..

cd $SRC_DIR/madplay-0.15.2b

./configure --host=arm-linux --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/include

LDFLAGS=-L$TARGET_DIR/lib

make;make install

cd ../../  

脚本生成后增加权限

(#chmod 777 jiaoben)

执行脚本

(#./jiaoben)

7、下载madplay到开发板运行测试

为了区别于板子中已经存在的madplay,把新做的madplay改名为mymadplay,复制依赖库

依赖库为/opt/FriendlyARM/mini2440/madplay/target-arm/lib

和/opt/FriendlyARM/mini2440/madplay/target-arm/bin/madplay

把lib和madplay从虚拟机复制到桌面并保存到U盘

在U盘中把madplay改名为mymadplay

8、使用U盘连接到开发板,并把U盘中的mymadplay文件复制到开发板中/usr/bin文件中

在开发板中操作

(#cp /udisk/mymadplay  /usr/bin)

把U盘中的lib文件夹中的所有东西移动到开发板/lib

U盘lib文件夹中的文件有(libid3tag.alibid3tag.lalibid3tag.solibid3tag.so.0libid3tag.so.0.3.0libz.alibz.solibz.so.1libz.so.1.2.5   pkgconfig)其中pkgconfig是一个文件夹

pkgconfig文件夹中文件有(zlib.pc)

注意:开发板中文件夹是不能移动的,要一个一个文件移动

在U盘lib文件夹中还有一个文件夹pkgconfig,我们需要在开发板/lib中新建pkgconfig文件夹才能把U盘lib文件夹中pkgconfig文件夹中的zlib.pc复制到开发板/lib/pkgconfig中

在开发板中操作

(#cd /lib)

(#mkdir pkgconfig)

(#cd /udisk)

(#cp lib/pkgconfig/zlib.pc /lib)

(#cp lib/libid3tag.a  /lib)

(#cp lib/libid3tag.la  /lib)

(#cp lib/libid3tag.so  /lib)

(#cp lib/libid3tag.so.0  /lib)

(#cp lib/libid3tag.so.0.3.0  /lib)

(#cp lib/libz.a  /lib)

(#cp lib/ libz.so  /lib)

(#cp lib/ libz.so.1   /lib)

(#cp lib/ libz.so.1.2.5  /lib)

向开发板里复制你喜欢的音乐到/usr/bin,就可以执行文件了,接着就听到美妙动听的音乐了。

例如:

(#cd /udisk/)

(#cp xd.mp3 /usr/bin)

(#cd  usr/bin)

(#./mymadplay xd.mp3)

在这里MP3移植成功

你可能感兴趣的:(播放器)