LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1394|回复: 0

Mplayer移植到mini2440

[复制链接]
发表于 2010-12-21 09:48:01 | 显示全部楼层 |阅读模式
MP3移植到mini2440
一、        环境
a)        操作系统:Linux5 (内核版本:2.6.18-164.el5)
b)        开发板:mini2440(nand 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 ../../  
运行后生成madplay和lib文件。
7.下载madplay 到开发板运行测试
为了区别于板子中已经存在的 madplay,我们把新做的改名为mymadplay,把它以及依赖库通过 tftp 下载到开发板,并作如下放置:
执行文件:
mymadplay 放在/bin/目录   库文件放在/lib 目录。
步骤如下:
一、        将Linux中的要放到开发板中的东西先弄到PC上面
二、        打开tftp软件选择PC机的IP地址同时选择文件所在的位置
可以查看文件
三、        在开发板中输入命令:
a)        cd /bin/
b)        tftp –g  –r  mymadplay  PC的IP  
c)        cd  /lib
d)        tftp –g –r 库里面的文件 PC的IP   (一个一个的传,当遇到pkgconfig文件夹时就在板子上面创一个pkgconfig文件夹,进入文件夹后继续下载库文件)
四、         在/bin文件夹中给 mymadplay 777 权限,即可使用播放器了
#./ mymadplay 1.mp3 就会显示
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表