移植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:
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开发板的更多相关文章
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
- [转载非常好的文章]JLink+GDBServer调试S3C6410裸板的初始化代码 For OK6410开发板
要调试裸板,有两种初始化方法,一个是用烧好的uboot初始化,再有就是直接用JLink+GDBServer初始化.代码参考了网上的资料,根据手头的OK6410开发板做了修改.整体代码如下: # Con ...
- live555 交叉编译移植到海思开发板
本文章参考了.http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明.特此感谢 https://blog.csdn.n ...
- 飞凌OK6410开发板SDIO无线8189WIFI模块驱动移植
为什么要移植?开发板不是已经提供了无线驱动吗? 貌似是这样的..本来是好用的.加入自己第三方驱动后发现WIFI用不了...最后发现飞凌提供的内核里面没有8189芯片的代码...问售后他们说那边是好的. ...
- 移植BOA服务器到开发板
移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...
- Linux移植到自己的开发板(二)UBOOT和Linux
@ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...
- OK6410开发板系统安装---嵌入式回归第二篇
1. 嵌入式系统须要被安装到开发板的nandflash上 或者 SD卡上 2. 须要安装的嵌入式Linux系统能够分三个部分 watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...
- Linux移植到自己的开发板(三)根文件系统
@ 目录 1 Linux内核配置 2 ramdisk制作 3 busybox配置 4 genext2fs生成镜像 为了快速调试,采用ramdisk进行根文件系统测试.要使内核能挂载ramdisk根文件 ...
- (原创)AP6212移植到AM335X自主开发板上
转载请指明出处. 参考<关于AM335X移植SDIO WIFI的简易教程> http://www.deyisupport.com/question_answer/dsp_arm/sitar ...
随机推荐
- 手把手实现Java权限(1)-Shiro介绍
功能介绍 Authentication :身份认证/登录.验证用户是不是拥有对应的身份: Authorization :授权,即权限验证.验证某个已认证的用户是否拥有某个权限:即推断用 户能否做事 ...
- 我要带徒弟学JAVA架构 ( 写架构,非用架构 )
80元,当然我不觉得我带的徒弟比花了1万多在培训班学习的学生差,你努力了.会比他们出色的多.等你学有所成.相同能够成为jeecg核心成员之中的一个.一起构建Java学习平台.你也能够成为非常好的师傅. ...
- arm32位固定指令中怎么容纳32位变量
在ARM指令集汇编码中.32位有效马上数是通过______偶数位而间接得到的 A.循环左移 B.循环右移. C.逻辑左移. D.逻辑右移 答案为循环左移.为什么?还有最好解释一下逻辑移动和循环移动的概 ...
- 【BZOJ】2140 稳定婚姻
[解析]Hash,离散化.Tarjan [分析] 对于每一个名字.首先离散化成编号. 用hash或者其它,反正不要最主要的即可了.否则O(N^2L)会爆掉. 然后请參考:http://www.cnbl ...
- C语言高速入门系列(一)
C语言高速入门系列(一) 本系列引言: 本教程的宗旨是将C语言入门的内容进行关键知识点的提纯,将一些笼统的废话去除; 再进行压缩,然后将本章的关键知识点做成路线图的,能够更加方便地掌握学习的方向; ...
- cdev_init和register_chrdev区别
--- 01:include/linux/fs.h static inline int register_chrdev(unsigned int major, const char *name, co ...
- 设备树学习之(一)GPIO中断【转】
本文转载自:http://blog.csdn.net/lizuobin2/article/details/54563587 开发板:tiny4412SDK + S702 + 4GB Flash 要移植 ...
- 【SDOI 2010】 计算器
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2242 [算法] 第一问用快速幂解决 第二问用exgcd解决 第三问用BSGS算法解决 ...
- SQL Server 2005外围应用配置器
在SQL Server Configuration Manager中,重启“SQL Server(SQL2005)”服务.
- Redis(一)、Redis五种数据结构
Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安 ...