免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4319 | 回复: 10
打印 上一主题 下一主题

error: parse error before "shadowBufPtr" ---在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-10 14:50 |只看该作者 |倒序浏览
10可用积分
交叉编译XFree86-4.5出现如下错误
/home/project/tpc66/snapgear/tools/ucfront-gcc arm-linux-gcc -I. -I./..  -I/usr/local/arm-linux/include    -L/usr/local/arm-linux/lib -ldl -lpthread -lc -lc-2.3.3  -iwithprefix include -c -O2 -ansi -Wall -Wpointer-arith -Wundef     -I. -I../../../../exports/include/X11 -I../../../../include/fonts        -I../../mi -I../../include -I../../os        -I../../fb -I../../miext/shadow -I../../render        -I../../../../include/extensions -I../../../../exports/include/X11 -I../../../../programs/Xserver/Xext  -I../../../.. -I../../../../exports/include   -Dlinux -D__arm__ -D_POSIX_SOURCE                 -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE -DSHAPE -DXINPUT -DXKB       -DXCSECURITY -DTOGCUP      -DXF86BIGFONT -DDPMSExtension      -DPIXPRIV -DPANORAMIX      -DRENDER -DRANDR -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV -DSINGLEDEPTH                 -DXFreeXDGA -DXvExtension                 -DXFree86LOADER  -DXFree86Server                 -DXF86VIDMODE                 -DXvMCExtension                 -DSMART_SCHEDULE         -DBUILDDEBUG -DXResExtension                 -DX_BYTE_ORDER=X_LITTLE_ENDIAN -DNDEBUG  -DNEED_STRLCAT  -DFUNCPROTO=15 -DNARROWPROTO   -DDDXOSINIT -DSERVER_LOCK -DDDXOSFATALERROR                 -DDDXOSVERRORF -DMITMISC -DXTEST -DXTRAP     -DXSYNC -DXCMISC -DXRECORD     -DMITSHM -DBIGREQS -DXF86VIDMODE     -DXF86MISC  -DDPMSExtension -DEVI     -DSCREENSAVER -DXV -DXVMC      -DFONTCACHE          -DRES -DDMXEXT -DXTEST       -UGLXEXT -UBEZIER -UPEXEXT     -UMULTIBUFFER     -UXV     -UXIE     -UDBE     -UXF86VIDMODE     -UXF86MISC     -UXFreeXDGA     -UXF86DRI     -UMITSHM     -UTOGCUP     -UDPSEXT     -UMITMISC     -USCREENSAVER     -URANDR     -UFONTCACHE     -UXFree86LOADER -DVENDOR_STRING=\""DMX Project"\" -DVENDOR_RELEASE="((1)     * 100000000) +     ((2)     *   1000000) +     ((2004-2000) *     10000) +     ((6)     *       100) +     ((30)       *         1)"       -DOSNAME='"Linux 2.6.24-19-generic i686 [ELF]"' -DOSVENDOR='""'   dmxscrinit.c
In file included from /usr/local/arm-linux/include/string.h:375,
                 from ../../include/os.h:153,
                 from ../../include/misc.h:117,
                 from ../../include/screenint.h:52,
                 from ../../include/gc.h:56,
                 from ../../include/gcstruct.h:55,
                 from dmx.h:54,
                 from dmxscrinit.c:39:
/usr/local/arm-linux/include/bits/string2.h:50:5: warning: "_STRING_ARCH_unaligned" is not defined
/usr/local/arm-linux/include/bits/string2.h:98:6: warning: "_STRING_ARCH_unaligned" is not defined
In file included from dmxscrinit.c:41:
dmxshadow.h:45: error: parse error before "shadowBufPtr"
dmxscrinit.c: In function `dmxScreenInit':
dmxscrinit.c:255: warning: implicit declaration of function `shadowAlloc'
dmxscrinit.c:257: warning: assignment makes pointer from integer without a cast
dmxscrinit.c:313: warning: implicit declaration of function `shadowInit'
make[4]: *** [dmxscrinit.o] 错误 1
make[4]: Leaving directory `/root/snapgear/user/XFree86-4.5.0/xc/programs/Xserver/hw/dmx'
make[3]: *** [hw/dmx] 错误 2
make[3]: Leaving directory `/root/snapgear/user/XFree86-4.5.0/xc/programs/Xserver'
make[2]: *** [all] 错误 2
make[2]: Leaving directory `/root/snapgear/user/XFree86-4.5.0/xc/programs'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/root/snapgear/user/XFree86-4.5.0/xc'
make: *** [all] 错误 2
在网上找了半天,好像说是没有包含相应的头文件,出错的地方在dmxshadow.h,该文件只有一行声明
extern void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf);
可是我现在还没有找到ScreenPtr的声明呢。我是个菜鸟,希望大虾耐心指教下,不胜感激!

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2008-11-10 17:55 |只看该作者
问题应该在c文件中,不大可能在.h中
所以,看看出错的文件的提示的行数的时候所编译的.c文件

论坛徽章:
0
3 [报告]
发表于 2008-11-10 19:10 |只看该作者
谢谢 T-bagwell 的回复,以下是该函数的实现代码,我个人觉得代码应该没有问题的,肯定是我的 编译选项等的问题,因为在ulibc下就可以编译通过的。
void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf)
{
    RegionPtr      damage = &pBuf->damage;
    int            nbox = REGION_NUM_RECTS(damage);
    BoxPtr         pbox = REGION_RECTS(damage);
    DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];

    if (!dmxScreen->beDisplay)
        return;

    while (nbox--) {
        XPutImage(dmxScreen->beDisplay,
                  dmxScreen->scrnWin,
                  dmxScreen->shadowGC,
                  dmxScreen->shadowFBImage,
                  pbox->x1, pbox->y1,
                  pbox->x1, pbox->y1,
                  pbox->x2 - pbox->x1,
                  pbox->y2 - pbox->y1);

        pbox++;
    }

    dmxSync(dmxScreen, FALSE);
}

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
4 [报告]
发表于 2008-11-10 19:19 |只看该作者
Maybe!It's a gui program!

[ 本帖最后由 T-bagwell 于 2008-11-10 19:22 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-11-11 09:16 |只看该作者
还有一个奇怪的事情就是,在其它的已经编译通过的目录里面也有类似ScreenPtr pScreen的声明一个指针变量,而编译的时候竟然没有报错,而编译这个文件的时候竟然会报错!

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
6 [报告]
发表于 2008-11-11 09:47 |只看该作者
代码能给我看看不?
这么看太费劲了
从代码可以看出你是做图形开发的,呵呵

论坛徽章:
0
7 [报告]
发表于 2008-11-11 11:48 |只看该作者
不知道你是要看哪个代码?就是出错的那行函数所在的源文件吗?我稍后会给你发到邮箱里面。我用的代码其实就是从XFree86的官方网站上下载下来的,版本为4.5.0,并没有什么其它的地方,只不过我就是修改了一下 /xc/config/cf/cross.def, /xc/config/cf/host.def文件,目的是为了交叉编译。

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
8 [报告]
发表于 2008-11-11 12:14 |只看该作者

那你没修改之前能编译过不?

论坛徽章:
0
9 [报告]
发表于 2008-11-11 12:48 |只看该作者
没有修改以上两个文件是可以编译通过的,原来连接的是uClibc(这个uClibc 是snapgear 套件的一部分,我通过编译snapgear 可以编译出uclib),现在修改一下是为了连接glibc(glibc的库是从 snapgear 网站上下载下来的 cross-toolchain,这个toolchain既有交叉编译器,又有已经交叉编译好的glibc)。
原来的cross.def

#undef StandardDefines
#define StandardDefines         -Dlinux -D__arm__ -D_POSIX_SOURCE \
                                -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE
#undef CcCmd
#define StdIncDir /usr/local/arm-linux/include
#define PreIncDir
#undef PostIncDir
#define PostIncDir /home/project/tpc66/snapgear/uClibc/include

#define CcCmd /home/project/tpc66/snapgear/tools/ucfront-gcc arm-linux-gcc -I/home/project/tpc66/snapgear/uClibc/include    -L/home/project/tpc66/snapgear/uClibc/lib -ldl -lpthread -lc -luClibc-0.9.27  -iwithprefix include
#undef CplusplusCmd
#define HasCplusplus NO
#define DoRanlibCmd YES
#define RanlibCmd /usr/local/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -ltermcap

#undef LdPostLib
#define LdPostLib        -L/home/project/tpc66/snapgear/uClibc/lib
#undef LdCmd
#define LdCmd                 arm-linux-ld
#undef ExtensionOSDefines
#define ExtensionOSDefines

#define ServerXdmcpDefines        /**/

/* #define HostCcCmd  cc */
#endif
#include <cross.rules>



现在修改后的cross.def

/* $XFree86: xc/config/cf/cross.def,v 1.3 2002/04/04 14:05:33 eich Exp $ */
/*
* This file contains redefinitions of some symbols to enable
* cross compilation: e.g. paths for include files and paths to
* compiler images.  It will have to be edited to reflect these
* given your local configuration.
*/
#if 1
#undef i386Architecture
#define Arm32Architecture

#undef OptimizedCDebugFlags
#define OptimizedCDebugFlags         -O2
#define ServerCDebugFlags        -O2
#undef StandardDefines
#define StandardDefines         -Dlinux -D__arm__ -D_POSIX_SOURCE \
                                -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE
#undef CcCmd
#define StdIncDir /usr/local/arm-linux/include
#define PreIncDir
#undef PostIncDir
#define PostIncDir /usr/loclal/include

#define CcCmd /home/project/tpc66/snapgear/tools/ucfront-gcc arm-linux-gcc -I. -I./..  -I/usr/local/arm-linux/include -I/usr/local/arm-linux/sys-include   -L/usr/local/arm-linux/lib -ldl -lpthread -lc -lc-2.3.3  -iwithprefix include
#undef CplusplusCmd
#define HasCplusplus NO
#define DoRanlibCmd YES
#define RanlibCmd /usr/local/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -ltermcap

#undef LdPostLib
#define LdPostLib        -L/usr/local/lib
#undef LdCmd
#define LdCmd                 arm-linux-ld
#undef ExtensionOSDefines
#define ExtensionOSDefines

#define ServerXdmcpDefines        /**/

/* #define HostCcCmd  cc */
#endif
#include <cross.rules>

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
10 [报告]
发表于 2008-11-11 13:25 |只看该作者
具体我也不大了解,可能问题出在lib上吧
因为 uClibc和glibc还是有很大的区别的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP