有一个很热情的网友一直跟我说,希望我在a1200上开发一个视频播放器。视频播放器开发不是一件很容易的事情,需要花费大量的时间和工作量才能完成。开始我一直在犹豫,现在已经决定了做一个播放器试试。如果能够站在巨人的肩膀上就更好了,我尝试搜索了一下关于arm-linux环境下面移植mplayer的成功经验。
他们多数是在纯粹的linux开发环境下面做的,而且网上多数大侠的移植,是通过修改configure编译参数来实现的。nokia s60的开发环境都是win32的,我不想由于这么个爱好性的项目而为日常工作带来不便,因此还是偏向于在win32环境下面开发它,而且基于win32-cygwin的a1200开发调试环境也已经用了一段时间了,感觉还是不错的,win32下面也有不少很优秀的辅助开发工具。用起来并不比linux环境慢多少。
看了网上对于mplayer的编译过程,多数人是使用如下的命令:
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-static --disable-win32 --disable-dvdread --enable-fbdev --disable-x11 --disable-sdl --disable-mencoder
通过svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer下载了最新的版本,编译了一下,得到如下错误:
nutdec.c:193: error: unable to find a register to spill in class `LO_REGS'
nutdec.c:193: error: this is the insn:
(insn:HI 1135 2249 1136 61 0x7fee2880 (set (reg:DI 3 r3 [274])
(ashiftrt:DI (reg/v:DI 1 r1 [261])
(subreg:SI (reg:DI 41 wr10 [272]) 0))) 444 {ashrdi3} (nil)
(expr_list:REG_DEAD (reg/v:DI 1 r1 [261])
(expr_list:REG_EQUAL (ashiftrt:DI (reg/v:DI 1 r1 [261])
(const_int 1 [0x1]))
(nil))))
nutdec.c:193: confused by earlier errors, bailing out
把编译的命令行拷贝下来,然后去掉-O4,然后再手工编译即可。
编译libavutil的时候出现如下错误
intfloat_readwrite.c: In function `av_dbl2int':
intfloat_readwrite.c:66: internal compiler error: in choose_reload_regs, at reload1.c:5893
这是由于-O4优化编译选项造成的,去掉-O4手工编译一下即可得到.o文件。
后来发现还有几处都是-O4优化选项出得问题。去掉-O4,直接手工编译即可得到.o文件。
天知道这-O4优化选项都改了哪些地方,为什么好好的代码到了它的手里就编译不了。
不管怎么说只要能够把libavcodec和libavformat编译成功,剩下的东西就可以入手开始写了,至于mplayer本身是否可以编译成功,其实已经不是最关键的问题。它只是一个壳罢了。这个壳我们是可以自己手工写出来的。
阅读(4684) | 评论(12) | 转发(0) |