首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcl的nap6.4.由于“Nap_parse类型冲突”导致安装和制作失败

tcl的nap6.4.由于“Nap_parse类型冲突”导致安装和制作失败
EN

Stack Overflow用户
提问于 2016-01-27 22:37:51
回答 1查看 76关注 0票数 1

我需要安装Nap6.4,但它失败了,并显示"error: conflicting types for Nap_parse“。我有一个Dockerfile,其中包含“add./nap6_4_0src.tar.gz /usr/local”,并在usr/local/nap/unix中键入:

代码语言:javascript
复制
./configure --prefix=/usr/local && make && make install

我已经使用相同的方法安装了Proj4、hdf4和netcdf。我也尝试过其他版本的Nap,但它们都给出了相同的错误。我在过去的几天里一直在尝试修改nap/generic下的文件,其中一些是由Bison生成的,还有一些m4文件。有人认识到这个错误并知道如何修复它吗?任何帮助我们都将不胜感激!

以下是错误消息:

代码语言:javascript
复制
cc -c -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -   DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DUSE_TCL_STUBS=1 -DUSE_TK_STUBS=1 -DHAVE_UNISTD_H=1 -DISNAN64=isnan -DVERSION=\"6.4\" -DPATCHLEVEL=\".0\" -I`echo /build/nap/generic` -I`echo /usr/local/include` -I`echo /usr/local/include` -I`echo /usr/local/include` -I`echo /lib/ActiveTcl-8.6/include` -O -D__NO_STRING_INLINES -D__NO_MATH_INLINES  -fPIC  `echo /build/nap/generic/eval_tree.c`
In file included from /build/nap/generic/eval_tree.c:16:0:
/build/nap/generic/napParse.tab.h:79:5: error: conflicting types for 'Nap_parse'
int Nap_parse (void);
 ^
In file included from /build/nap/generic/eval_tree.c:14:0:
   /build/nap/generic/nap.h,m4:610:13: note: previous declaration of Nap_parse was here
EXTERN int  Nap_parse(void *Nap_param); /* Defined in napParse.y */
         ^
make: *** [eval_tree.o] Error 1

此外,我还得到了一些其他错误:

代码语言:javascript
复制
napParse.tab.c:2122:46: error: macro "Nap_error" passed 2 arguments, but     takes just 1
/usr/local/nap/generic/napParse.tab.c:65:25: error: 'Nap_error' undeclared  (first use in this function)
 #define yyerror         Nap_error
                     ^
napParse.tab.c:2122:7: note: in expansion of macro 'yyerror'
/usr/local/nap/generic/napParse.tab.c:65:25: note: each undeclared identifier  is reported only once for each function it appears in
 #define yyerror         Nap_error
                     ^

代码语言:javascript
复制
 make: *** No rule to make target `netcdf.h', needed by `nap_get.o'.

我怀疑后一个错误和其他一些类似的错误是因为我尝试

代码语言:javascript
复制
./configure --prefix=/lib/ActiveTcl8.6 

你知道这里出了什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-28 06:02:02

Nap6.4的源代码非常旧,它似乎期望有一个特定范围的bison版本。这很可能是因为你的野牛太新了,不适合这个范围。

特别是,napParse.y的第28和29行

代码语言:javascript
复制
#define YYPARSE_PARAM Nap_param
#define YYLEX_PARAM Nap_param

如果您的野牛版本是2.7或更高,将不会有任何影响。这些宏在2002年就已经弃用了,到了2012年,它们实际上已经从生成的代码中删除了。因此,define%s将不起作用。

另外,在第36行:

代码语言:javascript
复制
%pure_parser

我认为这可能仍然被接受,但它也已经被弃用了很长一段时间。

代码语言:javascript
复制
%define api.pure full
%param { void* Nap_param }

代码语言:javascript
复制
%define api.pure full
%parse-param { void* Nap_param }
%lex-param { void* Nap_param }

您还需要更正Nap_error的定义,您可以在文件generic/nap_check.h的第194行找到它。该定义应为:

代码语言:javascript
复制
#define Nap_error(Nap_param, message) \
    Nap_Check(Nap_param, __FILE__, __LINE__, message)

当前的错误扫描器将%parse-param中指定的参数添加到对bison函数的调用中,因此您需要更改宏的原型以接受该参数,而不是从环境中拾取该参数。

如果这样做有效,您可能需要提交一份错误报告,尽管我完全不清楚是否有人在维护该软件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35040231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档