移植Mplayer到OK6410开发板 作者:vasage

项目需要,需要将Mplayer移植到开发板上,所以今天花了一下下午成功移植,其中参考很多文档,后发现许多文档陈旧,些许文档有少量错误,所以这里整理一下放出来。经过测试,avi、mp3等音视频播放流畅,运行正常,下面就是移植过程,给大家做参考。测试步骤我觉得没必要放上来,请见谅。作者lcc76161113,欢迎转载。

编译器:arm-linux-gcc(4.3.2) 
    Pc平台:ubuntu

在移植之前有必要先说明一下几个问题: 
    Mplayer是自带的mp3lib库来进行mp3解码的,但是arm系列的cpu,一般都没浮点运算单元,而mplayer的mp3解码默认使用mp3lib,这个是浮点运算库,arm上肯定跑不了。所以使用libmad库应该就没问题了,所以需要提前移植libmad库。

(1)准备工作 
①下载库文件libmad-0.15.1b.tar.gz并解压到 /usr/local/libmad  
  ②下载Mplayer的tar包,官方下载地址http://www.mplayerhq.hu,进去后在ftp里面很多版本可以选,我选的最新的MPlayer-1.0rc4.tar.gz,大小12.3M。 
③准备编译前请先确定已安装交叉编译器arm-linux-gcc(4.3.2),并已经在终端设置好环境变量,做好这些就可以开始移植工作了。

(2)编译libmad 
①先下载压缩包到本地,并解压libmad-0.15.1b.tar.gz到/usr/local/libmad: 
lcc@ubuntu: /usr/local/libmad # tar zxvf mysql-5.1.51.tar.gz 
②进入解压得到的源码目录中: 
      lcc@ubuntu: /usr/local/libmad # cd libmad-0.15.1b 
③运行configure,生成makefile: 
      lcc@ubuntu: /usr/local/libmad/libmad-0.15.1b #./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/libmab/mad  
④修改makefile: 
    lcc@ubuntu: /usr/local/libmad/libmad-0.15.1b #./gedit Makefile  
    找到里面的“--fforce-mem”,然后删除保存退出即可 
⑤直接开始运行make编译源代码: 
lcc@ubuntu: /usr/local/libmad/libmad-0.15.1b # make

(3)交叉编译Mplayer 
①先下载压缩包到本地,并解压MPlayer-1.0rc4.tar.gz到/usr/local/mplayer: 
lcc@ubuntu: /usr/local/mplayer # tar zxvf MPlayer-1.0rc4.tar.gz

②进入解压得到的源码目录中: 
lcc@ubuntu: /usr/local/mplayer # cd MPlayer-1.0rc4

③运行configure,生成makefile: 
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4#  
./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=/usr/local/Mplayer/mplayer 2>&1 | tee logfile

这个就是我的配置内容,这里详细说明一下: 
--host-cc=gcc --cc=arm-linux-gcc --target=arm-linux   //这个不需要解释 
--enable-fbdev                           //打开framebuffer支持.ARM开发板必须的 
--enable-static                           //静态编译,编译成功后只需要将exe文件拷走即可以使用 
--disable-dvdread --disable-dvdnav --disable-dvdread-internal //全部与DVD相关,无视即可 
--disable-libdvdcss-internal        //这个不加低版本mplayer也会出错 
--disable-live                              //禁止流媒体,我们用不到 
--disable-mp3lib --enable-mad  //关闭默认的MP3解码库,使用我们刚才编译的libmad 
--disable-win32dll                      //禁用win32动态链接库支持 
--disable-mencoder                   //交叉编译mencoder会有问题,而且arm上不需要这个功能 
--disable-ivtv                             //如果不加会出现ivtv文件产生的错误   
--enable-libavcodec_a               //启用静态的libavcodec解码 
--prefix=/usr/local/Mplayer/mplayer 2>&1 | tee logfile  //不解释

特别说明: 
    注意!!configure里面没有下面2句: 
   --enable-static --with-extraincdir=/usr/local/libmab/mad/include  
      --with-extralibdir=/usr/local /libmab/mad/lib

本来是还要有这2句话来指定我们编译的新的libmad的库的,但是由于新下载的mplayer源代码在配置的时候--with-extraincdir   –with-extralibdir提示没有此配置选项,因此需手动添加libmad库的支持,我的解决方法是将/ usr/local /libmab/mad/include下文件直接拷贝到mplayer源代码中,而对于其下面的库libmad.a,则先执行上面的“运行configure”一步,会生成config.mak文件,然后修改config.mak中在-lmad -L/usr/local /libmab/mad/lib,然后执行下一步即可。 
④修改Makefile. 
修改MPlayer-1.0rc4/libmpeg2/motion_comp_arm_s.S文件 
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4#  
gedit  /libmepg2/motion_comp_s.S 
在最前加入: 
#ifndef HAVE_PLD  
.macro pld reg  
.endm  
#endif 
⑤直接开始运行make编译源代码: 
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make 
⑥Make完成后,执行makeinstall命令,但是我遇到了如下问题:  
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make install

install -m 755 -s mplayer /home/hxy/MPlayer/ 
        MPlayer-1.0rc4/../mplayer/bin 
        strip: Unable to recognise the format of the input file  
       `/user/local/Mplayer/MPlayer-1.0rc4/../mplayer/bin/mplayer'

解决方法:  
查资料看install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,查看Makefile可以发现-s是如下 
$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF)     $(BINDIR) 
    的INSTALLSTRIP设置的,它默认是-s,因此只要简单在Makefile的install部分前面加入: 
INSTALLSTRIP :=  #将其置为空即可

⑥再次执行makeinstall命令,生成mplayer: 
    lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make install

附带一个只有图像没有声音的错误解决办法: 
mkdir -p /dev/sound  
ln -s /dev/dsp /dev/sound/  
原因:目标系统上有 /dev/dsp 音频设备文件,只是OSS音频驱动需要的是 /dev/sound/dsp 设备文件,这问题的简单解决方法是建一个符号链接,当然这两条命令可以写在系统的启动文件的适当位置,即修改系统的/etc/init.d/rcS文件。

至此,mplayer已经交叉编译成功,放在板子上测试一切正常。

欢迎到baidu文库或飞凌官网www.witech.com.cn下载,里面颜色比较明显方便阅读,免费下载的 
我的文库还有交叉编译mysql数据库的全过程文档. 
baidu文库搜索lcc76161113

移植Mplayer到OK6410开发板相关推荐

  1. linux内核移植与开发板,Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解

    Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解 [复制链接] 今天终于让Linux内核在飞凌的板子上跑起来了,想来也是艰辛,为了移植成功,断断续续做了将近两个月的努力,期间郁闷不可 ...

  2. mplayer linux arm,【嵌入式】交叉编译移植 Mplayer 到 ARM开发板

    一.基本信息 1.移植环境 ①:ubuntu16.04 ②:iMX6Q开发板 2.移植所需软件源码 ①:libmad libmad 下载 ②:mplayer mplayer下载 ③:百度网盘下载: 链 ...

  3. 飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2

    Part0 准备知识 0.1 关键参数说明 0.1.1 开发板说明 OK6410是飞凌公司发布的一款开发板,当前有2个版本,OK6410-A和OK6410-B,我当前使用的是前者:前者也经历过升级,所 ...

  4. mplayer移植-迅为IMX6Q开发板

    0 1 mplayer简介        mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布.它资源占用率低,无论是音频还是视频方面,支持的格式相当全面,支持的输出设备也很多,可以在各种 ...

  5. imx6q 开发板_mplayer移植-迅为IMX6Q开发板

    0 1 mplayer简介 mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布.它资源占用率低,无论是音频还是视频方面,支持的格式相当全面,支持的输出设备也很多,可以在各种主流操作系统中 ...

  6. at91sam9260ek开发板linux移植文档,AT91SAM9260EK开发板 Linux 移植 移植 文档

    AT91SAM9260EK开发板 Linux 移植 移植 文档 AT91SAM9260EKAT91SAM9260EKAT91SAM9260EKAT91SAM9260EK 开发板开发板开发板开发板 Li ...

  7. OK6410开发板Uboot学习总结----(一)Uboot启动分析

    OK6410开发板的Uboot是在1.1.6版本上进行移植的,为了便于分析,创建一个Source Insight工程,把源码下board目录里跟samsung相关的文件.cpu目录下s3c64xx文件 ...

  8. OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)

    中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...

  9. OK6410开发板学习之一步一步实现精简BootLoader(BL1部分)

    众所周知,ok6410开发板是一块基于s3c6410芯片的开发板,板载资源丰富.s3c6410是三星电子生产的基于arm11内核的芯片.本文旨在总结一下bootloader操作步骤,用于以后复习.查找 ...

最新文章

  1. [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt
  2. kafka-manager 的编译和使用(附安装包)
  3. linux下的PHP和windows下的php的区别
  4. function 与 + - !~
  5. linux 磁盘资源管理以及IO
  6. java中的动态代理----自己手动实现
  7. thinkphp 随机取10条数据_spark调优-数据倾斜
  8. Linux之相关英文缩写含义
  9. 二、将mysql用作一个简单的计算器
  10. 简易RAM的C++实现
  11. Ubuntu Server Download
  12. Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证
  13. 图解TCP/IP(第5版)
  14. 汽车车牌正则表达式验证,含新能源车牌(适用全国)
  15. Photoshop 合并序列帧图片单张多帧图片
  16. JavaScript(6):回调函数
  17. Python数据处理二
  18. Android Studio更换背景图片
  19. ESP32开发环境的搭建和 ESP-IDF支持以下调试方法
  20. [每日一题] 73. 电话号码(字符串、set)

热门文章

  1. c语言程序的类型文件是什么,C语言中的文件结构类型FILE
  2. 自助式BI节省步步高1000张报表,80万人力,充分为业务赋能
  3. redis应用场景之秒杀
  4. pytest进阶之xunit fixture
  5. 【数学】函数极限(宇哥笔记)
  6. 2017final游泳池过道造价
  7. 智见|HTC全球副总裁黄昭颖: 希望更多大厂进入元宇宙
  8. Windows下为有道词典添加词库(图文详解)
  9. Modbus协议简介
  10. Java语言程序设计(一)