成功移植mplayer到mini2440
2011-05-07 22:09:15| 分类: 默认分类 | 标签: |字号大中小 订阅
主机Linux系统:fedora 9
主机GCC编译器:gcc 版本 4.3.0
开发板:mini2440
arm-linux-gcc交叉编译器:arm-linux-gcc-4.4.3
下载: MPlayer-1.0rc2.tar.bz2 http://download.csdn.net/source/780629
arm-linux-gcc-4.4.3 http://ishare.iask.sina.com.cn/f/13836544.html
libmad-0.15.1b.tar.gz http://sourceforge.net/project/showfiles.php?group_id=12349
1.编译libmad库
前面提到了使用libmad库来替代mp3lib库来改善mplayer在ARM处理器上播放音频的性能,那么在编译mplayer之前得编译好libmad库。
下载 libmad 包(libmad-0.15.1b.tar.gz) http://sourceforge.net/project/showfiles.php?group_id=12349
将其解压后,进入 libmad 的目录,输入配置命令:
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/opt/toolchains/arm920t-eabi/lib CC=arm-linux-gcc
对于 --cc=arm-linux-gcc 选项要保证 arm-linux-gcc 的路径已经有 export 过,否则给出完整路径。
ps:其实意思就是事先已经搭建好交叉编译环境。
然后再make
出现错误 error: unrecognized command line option “-fforce-mem”
|
gedit configure.ac 替换“-fforce-mem”为“”空格。
make
make install
2、进入mplayer-1.0rc2.tar.bz2所在目录
例如:cd /tmp (我把软件包放在此目录)
输入: tar jxvf MPlayer-1.0rc2.tar.bz2
输入:cd MPlayer-1.0rc2
输入:./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static --disable-win32dll --disable-ivtv --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --with-extraincdir=/opt/toolchains/arm920t-eabi/lib/include --with-extralibdir=/opt/toolchains/arm920t-eabi/lib/lib --enable-libavcodec_a --language=en --disable-live 2>&1 | tee logfile
可能出现错误
Checking for inttypes.h (required) ... no
Checking for bitypes.h (inttypes.h predecessor) ...
Error: Cannot find header either inttypes.h or bitypes.h
解决方法 : 到/usr/include/ 拷贝inttypes.h 到当前目录下
# cp /usr/include/inttypes.h .(此有一点,表示复制到当前目录)
#./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static --disable-win32dll --disable-ivtv --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --with-extraincdir=/opt/toolchains/arm920t-eabi/lib/include --with-extralibdir=/opt/toolchains/arm920t-eabi/lib/lib --enable-libavcodec_a --language=en --disable-live 2>&1 | tee logfile
3、编译
执行
make
命令编译。
下面参考http://hi.baidu.com/linuxcfan/blog/item/d448a758f2906e232934f04f.html
执行过程中会出现类似如下错误提示:
armv4l/dsputil_arm_s.S:79:error:selected processor does not support 'pld [r1]' ......
原因分析:armv5以下的版本不支持pld指令(mini2440的arm9属于armv4)
解决方法一:替换MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件和MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S文件中的pld [r1]为空即可!
ps:为什么要修改两个文件呢?因为只修改错误提示中的那个文件后继续编译则会继续提示MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件中同样的错误^_^
修改方法:使用gedit分别打开dsputil_arm_s.S、motion_comp_arm_s.S这两个汇编源文件,将
pld[r1]替换成空格。
gedit libmpeg2/motion_comp_arm_s.S 查找 pld [r1] 替换成空格
gedit libavcodec/armv4l/dsputil_arm_s.S 查找 pld [r1] 替换成空格
然后再make
再 make install
出现问题:strip: Unable to recognise the format of the input file
查资料看install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,查看Makefile可以发现-s是如下
$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF) $(BINDIR)
的INSTALLSTRIP设置的,它默认是-s,因此只要简单去掉即可。
$(INSTALL) -m 755 mplayer$(EXESUF) $(BINDIR)
执行命令:gedit Makefile,将$(INSTALLSTRIP) mplayer$(EXESUF)替换成mplayer$(EXESUF)
再make install
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zyq1228/archive/2011/04/19/6334678.aspx
得到mplayer,下载到mini2440开发板/usr/bin目录
在开发板执行
mplayer test.avi -framedrop -quiet -vf rotate=1,scale=240:320
成功啦!这次终于有声音了!MP3也能播哦
但仍存在问题,播放AVI文件时有图像和声音,但播放RM或是RMVB文件时只有声音没有图像,可能是在安装mplayer之前要先安装相应的解码库,这个问题有待解决.