Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15357589
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2009-08-11 17:34:01

在make buildroot的rootfs的时候,编译MPlayer-1.0rc1出了问题:
armv4l/dsputil_arm_s.S:79:error:selected processor does not support 'pld[r1]'

和网上某位一样:

“好像是说不支持的指令,感觉非常奇怪,指定了arch=arm 的,怎么会出现不支持的指令呢。难道是我的版本不对”

自己确定已经配置成arm了,但是却有不支持的指令,很是奇怪,
后来去网上找到了如下解释:

Re: 3.5.4.1 status update and BSP request: msg#00003

The PLD instruction can just be ignored on arm4 - worst case it can be
commented/patched out or made conditional on arm5+. Its there to
"preload" memory so its safe to just ignore it on arches which don't
support it. I believe glibc uses macros for the function which only
result in the instruction being present in the arm5+ case. If you still
have problems, let me know and I'll try and look into it.

意思是,PLD这个指令,只有ARM5以上才支持,而此处,我的配置是arm922T,属于arm4,
不支持这个指令,可以直接忽略它。所以,用下面这个人的方法,
手动添加通过宏定义判断,就可以避开此问题了:

在cygwin下移植ffmpeg到wince
“3. armv4l/dsputil_arm_s.S:79:error:selected processor does not support 'pld[r1]'
这个是外部要定义下吧,
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif

也就是,修改dsputil_arm_s.S,在前面添加上:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif

即可。其实做的更好的,应该是通过判定arm系统结构是5以下,不支持此PLD指令,然后再加上此定义。

【解决办法2】
网上有人换了个arm gcc编译器版本也可以解决此问题:

“It seems this problem is realted to the ARM GCC 4.0. I used another ARM GCC 4.1
and did not receive this error message.”

阅读(1144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~