移植Mplayer到OK6410开发板

移植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: 
[email protected]: /usr/local/libmad # tar zxvf mysql-5.1.51.tar.gz 
②进入解压得到的源码目录中: 
      [email protected]: /usr/local/libmad # cd libmad-0.15.1b 
③运行configure,生成makefile: 
      [email protected]: /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: 
    [email protected]: /usr/local/libmad/libmad-0.15.1b #./gedit Makefile  
    找到里面的“--fforce-mem”,然后删除保存退出即可 
⑤直接开始运行make编译源代码: 
[email protected]: /usr/local/libmad/libmad-0.15.1b # make

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

②进入解压得到的源码目录中: 
[email protected]: /usr/local/mplayer # cd MPlayer-1.0rc4

③运行configure,生成makefile: 
[email protected]: /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文件 
[email protected]: /usr/local/mplayer/ MPlayer-1.0rc4#  
gedit  /libmepg2/motion_comp_s.S 
在最前加入: 
#ifndef HAVE_PLD  
.macro pld reg  
.endm  
#endif 
⑤直接开始运行make编译源代码: 
[email protected]: /usr/local/mplayer/ MPlayer-1.0rc4# make 
⑥Make完成后,执行makeinstall命令,但是我遇到了如下问题:  
[email protected]: /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: 
    [email protected]: /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开发板

时间: 2024-09-30 23:27:43

移植Mplayer到OK6410开发板的相关文章

ARM-Linux开机自启动设置-ok6410开发板

hdu 1163 Eddy's digital Roots Problem Description The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two

物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到github上(github.com/hellox-project/HelloX_OS),欢迎感兴趣的朋友下载测试. MinnowBoardMAX是在Intel的支持下,由Circuit公司开发的一款基于Intel ATOM处理器的卡片式电脑,具备超高的性能,丰富的扩展性,以及相对较低的功耗和成本.

OK6410开发板启动过程(详细信息)

硬件平台:OK6410开发板 KK U-Boot 1.1.6 (Sep 19 2014 - 10:00:03) for SMDK6410 **************************************** ** u-boot 1.1.6 ** ** Updated for OK6410 TE6410 Board ** ** Version (2012-09-23) ** ** OEM: Forlinx Embedded ** ** Web: http://www.witech.co

飞凌OK6410开发板SDIO无线8189WIFI模块驱动移植

为什么要移植?开发板不是已经提供了无线驱动吗? 貌似是这样的..本来是好用的.加入自己第三方驱动后发现WIFI用不了...最后发现飞凌提供的内核里面没有8189芯片的代码...问售后他们说那边是好的.这么到我这里就不行了呢?妈蛋...郁闷了...智能自己动手,把驱动移植进去... 1  找8189es芯片的原厂驱动代码:这里我找了N久,传到网盘里... http://pan.baidu.com/s/1bn7Gz6n 2 解压拷贝 tar jxvf rtl8288EUS_rtl8189ES_lin

OK6410开发板bootloader架构设计分析---嵌入式回归第五篇

在介绍bootloader嵌,先简要介绍一下汇编的相关知识!为后边的学习做铺垫!大学里面学习过汇编,之前汇编部分的视频也是一点一点的跟着国嵌的视频把代码撸出来一步一步的调试!相对学习起来还是比较容易的!比数据结构和算法简单的多了. 汇编语言介绍这一部分暂时就不写笔记了!写bootloader后边会用到比较多,这里只简单的挑一些重要的介绍一下. ARM汇编分类: 1. ARM标准汇编:使用ARM公司的汇编器,适合在windows平台下使用, 2. GNU汇编:适合于GNU交叉编译工具链中的汇编器,

移植minicom到ARM开发板 (转)

最近调试自己做的S5PV210的底板上面的串口.因为为了测试一个串口而写程序很麻烦.所以,直接移植了一个minicom到开发板上面.这样就可以直接进行串口收发了.特别是在我需要同时测试多个串口的时候,比写程序来得快.不多废话了,下面看操作流程. 第一步:需要交叉编译ncurses,否则minicom不能编译.直接去官网下载.地址不发.新建一个文件叫run,然后增加可执行属性,最后在其中加入如下配置./configure CC=arm-linux-gcc --prefix=/opt/4.3.2/a

OK6410开发板系统安装---嵌入式回归第二篇

1. 嵌入式系统需要被安装到开发板的nandflash上 或者 SD卡上 2. 需要安装的嵌入式Linux系统可以分三个部分 1> Bootloader 启动OS 3> 放应用程序 .用户文件 .配置文件 3. 把嵌入式Linux系统安装到Nandflash的具体步骤? 这里先采用左边dd命令/windows烧写软件方式 1. 将标准SD卡通过卡槽插到笔记本上 2. 快速格式化SD卡 3. 烧写启动安装程序 我的今天烧写的时候也出现了这个问题.之前学校的台式机一直用的很顺!百度了这个方法然后就

移植opencv到开发板,摄像头在开发板6410上的采集使用(1)

最近在搞人眼检测 人脸识别移植opencv qt 到开发板tiny6410的时候在虚拟机跑得程序可以用,但是一直到开发板一堆错误. 移植qt我简单写一下很简单 然后安装QT4.7 ①     拷贝压缩包到主机/opt目录下 ②     #mkdir –p /opt/mini6410 ③     #cd /opt/mini6410 ④     #tar zxvf /opt/qt-everywhere-opensource-src-4.7.0.tar.gz ⑤     执行以下命令执行Qt4.7.0

第五章搭建S3C6410开发板的测试环境

第五章本章主要介绍开发板的调试环境的搭建,以及如何将Android系统安装开发板上. 开发板是开发和学习嵌入式技术的主要硬件设备. 尽管可以在PC上开发Linux驱动,然后重新编译成ARM构架的Linux驱动模块,但最终都是要在开发板上进行测试的. 开发板从技术上说与手机类似,包含显示器.键盘.Wi-Fi.蓝牙等模块.开发板可扩展的端口多,容易开发定制的硬件. 第一节S3V6410开发板简介 S3C6410是一款低功耗.高性价比的RISC处理器,它给予ARM11内核,可以广泛应用于移动电话和通用