Madplayer移植到mini2440


一、         环境

a)       操作系统:Linux5 (内核版本:2.6.18-164.el5

b)      开发板:mini2440nand 128M,SDRAM 64M

c)       编译器:gcc 4.4.3 àarm-linux-gcc-4.4.3

二、         设备

a)       PC机、ARM9mini2440开发板

三、         资源

a)       调用的库

                       i.              libid3tag-0.15.1b.tar.gz

                     ii.              libmad-0.15.1b.tar.gz

                  iii.              madplay-0.15.2b.tar.gz(第二版本)

                  iv.              zlib-1.2.5.tar.bz2

                     v.              libstdc++.so.6.0.10 (编译器的替换库)

注:目前madplay的官方网站是http://www.underbit.com/products/mad/

透过该网站的介绍可以得知, 它还需要libmad libid3tag 两个库, 从该网站找到下载连接

http://sourceforge.net/project/showfiles.php?group_id=12349

b)      编译器

                       i.              arm-linux-gcc-4.4.3.tar.gz

c)       传输工具

                       i.              tftp软件(也可以用其他的传输)

四、         步骤

a)       首先搭建交叉编译环境

                       i.              arm-linux-gcc-4.4.3.tar.gz解压到一个空文件夹中

#tar zvxf arm-linux-gcc-4.4.3.tar.gz –C / (C的后面有空格)

                     ii.              改变环境

#gedit  /root/.bashrc

                  iii.              将路径改为/opt/FriendlyARM/toolschain/4.4.3/bin

expotr  PATH=$PATH:/ opt/FriendlyARM/toolschain/4.4.3/bin

 保存退出之后,要重启一下机子命令如下

   #reboot

                  iv.              重启之后查看是否编译成功

# arm-linux-gcc –v

在最后一行如果出现了版本号就是编译成功了

b)      修改编译调用的库链接

                       i.              # strings /usr/lib/libstdc++.so.6 | grep GLIBC

   结果的最后一句话:

GLIBCXX_3.4      没有GLIBCXX_3.4.9

                     ii.              # ls -l  /usr/lib/libstdc++.so.6

结果链接(快捷方式)为

/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8

                  iii.              # rm –rf /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8

                  iv.              #ls -l  /usr/lib/libstdc++.so.6

出现:/usr/lib/libstdc++.so.6:没有那个文件或目录

                     v.              把(资源)libstdc++.so.6.0.10放入/usr/lib

                  vi.              重新做链接

#ln -s /usr/lib/libstdc++.so.6.0.10  /usr/lib/libstdc++.so.6

c)       建立工作目录,拷贝源代码包

/opt/FriendlyARM/mini2440 目录下建立madplay 目录,并以此为工作目录,并在该目录中建立以下子目录,以存放不同的文件:

#cd /opt/FriendlyARM/mini2440

#mkdir madplay

#cd madplay

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

目录说明:

tarball 目录用来存放所有的源代码包

src-x86 目录用来存放X86 版本的所有源代码文件

src-arm 目录用来存放ARM 版本的所有源代码文件

target-x86 目录是X86 版本的安装目录

target-arm 目录是ARM 版本的安装目录

1.     接下来把从网上下载到的源代码包(四个)放入 tarball 目录中。

2.     解压原代码包

#cd tarball

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

(手打命令)

3.     编译madplay 所依赖的库文件

a) libid3tag

#cd ../src-x86/libid3tag-0.15.1b

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

#make

#make install

b) libmad

#cd ../ libmad-0.15.1b

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

#make

#make install

如果编译时出现错误:cc1: error: unrecognized command line option -fforce-mem

解决办法:

其实这个错误是编译安装libmad时候引起的,audacity包含libmad

解决方式是:找到libmad configure之后的Makefile,

vi Makefile

找到包含"-fforce-mem"字符串,将其删除,就ok

原因是gcc 4.4 或者更高版本,已经将其去除了,所以会出现上面的错误!

 

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

 

4.     编译安装madplay

如果我们还是像刚才那样配置编译选项:

#cd madplay-0.15.2b

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

将会出现如图错误:

 

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

#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86 CPPFLAGS=-I/opt/FriendlyARM/mini2440/madplay/target-x8

6/include

注意:上面的四行是一条命令

运行结果如图所示:

 

提示告诉我们还要设置 LDFLAGS 环境变量,因此再次修改配置参数如下:

#cd ../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 目录中:

#ls target-x86/bin

abxtest madplay

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

5.     测试PC 版的madplay

拷贝一首mp3 文件到madplay 所在的目录,执行:

#./madplay test.mp3

如果你的声卡已经正确安装,就可以听到mp3 的声音了。

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

将脚本放在/opt/FriendlyARM/mini2440/madplay)我给它命名为mm.sh

#!/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 ../../ 

运行后生成madplaylib文件。

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

为了区别于板子中已经存在的 madplay,我们把新做的改名为mymadplay,把它以及依赖库通过 tftp 下载到开发板,并作如下放置:

执行文件:

mymadplay 放在/bin/目录   库文件放在/lib 目录。

步骤如下:

一、    Linux中的要放到开发板中的东西先弄到PC上面

            1.首先要修改开发板的IP

             #cd etc

            #vi eth0-setting   IP网关,保存退出

            #cd init.d

            #vi ifconfig-eth0 

        在最后的几行里找到IP修改,保持退出

      #reboot 重启一下!

二、    打开tftp软件选择PC机的IP地址同时选择文件所在的位置

à可以查看文件

三、    在开发板中输入命令:

a)   cd /bin/

b)   tftp g  r  mymadplay  PCIP 

c)    cd  /lib

d)   tftp g r 库里面的文件 PCIP   (一个一个的传,当遇到pkgconfig文件夹时就在板子上面创一个pkgconfig文件夹,进入文件夹后继续下载库文件)

四、    /bin文件夹中给 mymadplay 777 权限,即可使用播放器了

#./ mymadplay 1.mp3 就会显示如下图所示↓↓↓ 

相关内容