1.文件准备:
MPlayer-1.0rc2.tar.bz2
libmad-0.15.1b.tar.gz
直接Git到本地
git clone https://gitee.com/zxz_FINE/mplayer_tarball.git
2.文件夹准备:
src存放解压后的源码文件,target_Mplayer存放编译安装的目标文件
mkdir src target_Mplayer
在target_Mplayer目录下创建libmad目录,用来存放libmad的目标文件
3.移植
3.1编译libmad文件
进入libmad的源码目录里,进行裁剪配置:(注意目录的修改)
./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable-debugging --prefix=/home/zxz/jz2440/Mplayer/target_Mplayer/libmad
然后make编译
若是出现: cc1: error: unrecognized command line option "-fforce-mem"
修改Makefile文件,找到 -fforce-mem,并删除掉后再次编译和安装
make
make install
3.2编译mplayer文件
(1)进入源码目录下,配置:
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-fbdev --enable-static --disable-dvdread --disable-live --disable-mp3lib --enable-mad --disable-win32dll --disable-mencoder --disable-ivtv --disable-dvdnav --disable-dvdread-internal --disable-libdvdcss-internal --enable-libavcodec_a --prefix=/home/zxz/jz2440/Mplayer/target_Mplayer>&1 | tee logfile
./configure 对MPlayer-1.0rc4 进行剪裁(将一些不需要的文件关闭),其中 --prefix表示后面运行的文件生成的路径我将其放入 目标目录下(生成的文件有:bin、etc、lib、share)
(2)vim打开config.mak文件,并修改,编译libmad库生成文件夹lib下的库函数是需要使用的,但是在配置这一点并没有被修改,所以要将该路径指出来。
(3) 修改 MPlayer-1.0rc4/libmpeg2/motion_comp_arm_s.S文件和libavcodec/armv4l/dsputil_arm_s.S文件
在文件的开头都添加内容如下:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
(4)修改Makefile文件:
install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,在Makefile的install部分前面加入:
INSTALLSTRIP := #将其置为空即可
(5)执行:
make 编译
make install运行安装
安装成功后,在mplayer目录下存在四个文件夹,分别为:bin、etc、lib、share
bin目录中,存在mplayer可执行文件(最终得到的结果,可直接供开发板使用)
(6)开发板上测试
mplayer test.mp4 -zoom -x 480 -y 272