友善Mini2440移植MP4播放器
开发环境:Ubuntu 8.10
操作系统:Linux内核版本:2.6.32
硬件平台:mini2440 By友善之臂
Arm-Linux-Gcc交叉编译环境:arm-linux-gcc-4.4.3.tar.gz点击下载
MP4视频播放器所需软件包
arm-linux-gcc-4.4.3.tar.gz点击上面下载
libstdc++.so.6.0.10 点击下载
MPlayer-1.0rc2.tar.gz可以去官方http://www.mplayerhq.hu/design7/dload.html下载最新版本
官方还有皮肤,文字库等等,可以根据需要下载。
建立交叉编译环境
首先要做的
# rm –rf /usr/lib/libstdc++.so.6
把下载到的libstdc++.so.6.0.10复制到/usr/lib/下(#cplibstdc++.so.6.0.10 /usr/lib/)
#cd /usr/lib/
建立链接软链接(# ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6)
查看链接是否成功(#strings /usr/lib/libstdc++.so.6 | grep GLIBCXX)之下如果出现
GLIBCXX_3.4.9
GLIBCXX_3.4.10
则表示链接成功!祝贺你,Let’s go on!
建立交叉编译环境
在虚拟机任意目录下建立文件夹如:mp4
(#mkdir /mp4)
将arm-linux-gcc-4.4.3.tar.gz压缩文件复制到/mp4
(#cp arm-linux-gcc-4.4.3.tar.gz /mp4)
解压缩文件arm-linux-gcc-4.4.3.tar.gz
(#cd /mp4)
(#tar xvzf arm-linux-gcc-4.4.3.tar.gz -C /)
修改文件在/etc/profile文件下添加交叉编译器的路径export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
#gedit /etc/profile在文件最后添加交叉编译器的绝对路径export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
然后保存退出。source /etc/profile (使配置文件快速生效,不必注销或者重启登录)
测试交叉编译器是否搭建正确,写一个简单的C文件,用交叉编译器编译,file编译结果如果看到Hello:ELF23-bit LSB executable,ARM,…字样,恭喜你!成功了,Go On!
至此,最主要的交叉编译环境已经搭建成功!
编译安装MPlayer
在/GuqSir/MP4文件夹下建立myplayer文件夹
(#cd //GuqSir/MP4 #mkdir myplayer))
把下载的MPlayer-1.0rc2.tar.gz压缩包复制到/GuqSir/MP4/myplayer并解压.
(#cp MPlayer-1.0rc2.tar.gz/GuqSir/MP4/myplayer)
(#cd /GuqSir/MP4/myplayer)
(#tar jvxf MPlayer-1.0rc2.tar.bz2)
进入/GuqSir/MP4/mplayer/MPlayer-1.0rc2文件夹执行如下命令:
(#cd /GuqSir/MP4/mplayer/MPlayer-1.0rc2)
(#./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static --disable-win32dll --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --disable-ivtv --disable-mad --enable-libavcodec_a --language=zh_CN --disable-live 2>&1 | tee logfile)
注释:
MPlayer不支持常见的--host来修改编译工具前缀.必须用--cc,--ar,--ranlib这样参数来修改.
--disable-mp3lib是关闭默认的MP3解码库,--disable-mad是使用libmad支持.--disable-dvbhead --disable-dvdread --disable-dvdnav --disable-dvdread-internal 都是DVD相关库--enable-fbdev 打开framebuffer支持.ARM开发板必须的. --enable-static如果使用静态编译尺寸大约是8M,动态编译是6M多,这样可能是无论哪种编译方式,mplayer都把自带的解码库链接到自身,多出2M应该是系统标准库的尺寸。
警告:如果不加--disable-ivtv会出现ivtv文件产生的错误。
--enable-static如果使用静态编译尺寸大约是8M,动态编译是6M多,这样可能是无论哪种编译方式,mplayer都把自带的解码库链接到自身,多出2M应该是系统标准库的尺寸。
执行完以上命令后执行make命令,make时会遇到错误,不支持pld[r1]指令
解决方法:
(#gedit/GuqSir/MP4/myplayer/MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S)文件
(#gedit /GuqSir/MP4/myplayer/MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S)
两个文件的开始处定义
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
执行make命令:
执行完make命令后/GuqSir/MP4/myplayer/ MPlayer-1.0rc2中的mplayer已经有了。
把/GuqSir/MP4/myplayer/MPlayer-1.0rc2文件夹中的mplayer通过tftp软件下载到开发板中任意位置(在此提议可以把mplayer文件放到/usr/bin中因为MP3播放器就在其中)并向开发板中下载一个视频到/usr/bin如test.avi
在开发板中执行./mplayer test.avi -framedrop -quiet -vf rotate=1,scale=240:320命令就可以在开发板上看见视频了,还有声音。
(#cd /usr/bin)
(#./mplayer test.wmv -framedrop -quiet -vf rotate=1,scale=240:320)
至此向s3c2440移植MP4视频播放器已经完全成功!