注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

守望

路越远,心越近。有多远,走多远!

 
 
 

日志

 
 

交叉编译问题: impossible constraint in 'asm'  

2012-03-07 22:35:53|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在交叉编译MiniGUI Lib3.0.12时库时遇到的问题,log信息如下:
pcxvfb.c: In function 'PCXVFB_VideoInit':
pcxvfb.c:490: error: impossible constraint in 'asm'
pcxvfb.c:508: error: impossible constraint in 'asm'
{standard input}: Assembler messages:
{standard input}:1241: Error: bad instruction `btsl r3,[r1,#-428]'
{standard input}:1302: Error: bad instruction `btsl r2,[r3,#-428]'
make[4]: *** [pcxvfb.lo] Error 1

我使用的configure命令如下:
CC=arm-none-linux-gnueabi-gcc \
CXX=arm-none-linux-gnueabi-g++ \
LD=arm-none-linux-gnueabi-ld \
AS=arm-none-linux-gnueabi-as \
AR=arm-none-linux-gnueabi-ar \
./configure --prefix=/usr/minigui \
--build=i386-linux \
--host=arm-linux \
--target=arm-linux

对这个问题不懂,一开始以为是src的问题,结果发现把相关函数的内容全部注释掉后
问题依旧,Google + Baidu之,没有找到答案,一头雾水啊!

找不到门了,回过头来翻看编译时的输出信息,没想发现一个警告:
arm-none-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I../../.. -I/home/ xxxx /libminigui-gpl-3.0.12/src/include -I/home/ xxxx /libminigui-gpl-3.0.12/include -I/home/ xxxx /libminigui-gpl-3.0.12/src/newgal/ -I/usr/include/ -g -O2 -D_WITH_TARGET_NONE -D__MINIGUI_LIB__ -D_REENTRANT -D_MG_ENABLE_SPLASH=1 -D_MG_ENABLE_SCREENSAVER=1 -Wall -Wstrict-prototypes -pipe -D_GNU_SOURCE -MT pcxvfb.lo -MD -MP -MF .deps/pcxvfb.Tpo -c pcxvfb.c  -fPIC -DPIC -o .libs/pcxvfb.lo
cc1: warning: include location "/usr/include/" is unsafe for cross-compilation
In file included from /home/xxxx/libminigui-gpl-3.0.12/include/common.h:1890,
                 from pcxvfb.c:14:
/usr/include/pthread.h:665: warning: '__regparm__' attribute directive ignored
/usr/include/pthread.h:677: warning: '__regparm__' attribute directive ignored
/usr/include/pthread.h:700: warning: '__regparm__' attribute directive ignored
/usr/include/pthread.h:713: warning: '__regparm__' attribute directive ignored
/usr/include/pthread.h:722: warning: '__regparm__' attribute directive ignored

这可是救命稻草,而且/usr/include的确不应该出现在这里,
修改Makefile:  src/newgal/pcxvfb/Makefile,把相关的地方都去掉,就两个地方如下:
#oldincludedir = /usr/include
INCLUDES = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include \
                                    -I$(abs_top_srcdir)/src/newgal/ -I/usr/include

重新make之,问题消失。再次提醒自己,提示信息要仔细看!


  评论这张
 
阅读(13394)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017