MPlayer的移植


MPayer:
 MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix系统、微软的视窗系统及苹果电脑的Mac OS X系统。MPlayer是建基于命令行界面,在各作业系统可选择安装不同的图形界面。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、AAlib、DirectFB下工作,而且你也能使用GGI和SDL和一些低级的硬件相关的驱动模式(比如Matrox、3Dfx和Radeon、
Mach64、Permedia3)。MPlayer还支持通过硬件MPEG解码卡显示,诸如DVB 和DXR3与Hollywood+。

Mplayer移植:
 首先需要知道一点的是因为MPlayer移植后需要mad库播放音频,所以还需要交叉编译libmad。
我们要先获得libmad库,我这里用的是libmad-0.15.1b.tar.gz。首先将其解压。
而后配置文件#./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging
--prefix=/usr/local/arm/usr/local/arm/4.3.1-eabi-armv6/lib(交叉编译工具目录中的库) CC=arm-linux-gcc
#make && make install
就这样,libmad就编译完成了,
接下来的就是MPlayer了,我这里用的是MPlayer-1.0rc2.tar.bz2,首先将其解压
而后配置文件#./configure --prefix=/opt/ARMMPlayer --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-static --disable-win32dll
--disable-dvdread --enable-fbdev  --disable-liba52 --disable-libmpeg2 --disable-mencoder --disable-live --disable-live --disable-mp3lib
--enable-libavcodec_a --language=zh_CN --disable-armv5te --disable-armv6
在这里要做一些裁剪,我在这里说一些简单的项:
 --cc 交叉编译工具,如果没添加到环境变量,就要指定完整路径
         --target 在pre版本中,对于--target和这个配置参数是这样描述的:
===============================================
--target=arm-armv4l-linux这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本,这个要注意了,一定要跟libavcodec目录下的平台目录名一致,否则为这个平台的优化代码没办法编译进去(据我观察是这样的);第三部分是系统平台。
===============================================
但是在rc2版本中,只需要--target=arm-linux这样指定就好了。
 --enable-static 是设定静态连接,不需要一堆乱七八糟的动态库,尤其对我们这些新手来说省了很多的麻烦。如果设置了这个参数就不用设置--prefix了,
另外也不用执行make install。
  --prefix=/tmp/mplayer-rc2
  make install后,可执行程序就安装在/tmp/mplayer-rc2目录下。
       --disable-win32dll
         禁用win32动态链接库支持。在pre版本中该参数为
      --disable-dvdread
        禁用libdvdread.
      --enable-fbdev
       支持fbdev,这个一定要选上。
      --disable-mp3lib 和 --enable-mad
      arm系列的cpu,一般都没浮点运算单元,而mplayer的mp3解码默认使用mp3lib,这个是浮点运算库,在arm上肯定跑不了,使用ffmp3或者libmad(需要外部库libmad支持)应该就没问题了。所以这里需要禁止掉mencoder和使能libmad。
      --disable-mencoder
        禁止编码功能。项目上不需要此功能,禁掉以缩小尺寸。而且听说在这里编译mencoder会有问题,听说而已,没试过。
      --disable-live
        禁止live 555流媒体。(不知道干啥用)
      --enable-libavcodec_a
        启用静态的libavcodec解码。在pre版本中该参数为--enable-libavcodec。
      --disable-armv5te --disable-armv6
       禁用armv5te、armv6指令扩展。
      --with-extraincdir和-with-extralibdir
        指定libmad和mad.h的路径。mad的路径被添加到编译参数-I和-L后面,替换libmad后需要指定。
        注:在pre版本中需要指定--host-cc=gcc配置参数。用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能缺少。
 但在rc2版本中该参数可以省略掉。
最后一步就是编译安装喽#make && make install

就这样交叉编译就哦了,剩下的就是移植了,将刚才生成的库文件可可执行文件通过NFS或者是别的什么方法移植到板上即可.....

相关内容

    暂无相关文章