在Mac 10.9.2上安装WordNet

3
我正在尝试在Mac(OS 10.9.2)上安装WordNet。我已经尝试了以下步骤:
  1. ./configure
  2. make
但在make期间出现了一些错误。然后我安装了XQuartz-2.7.5,但在make期间仍然出现错误。接下来,我安装了Xcode,但仍无法解决问题。这个问题建议安装Tcl/TK,我也尝试了,但在make期间仍然出现以下错误。
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in doc
Making all in html
make[3]: Nothing to be done for `all'.
Making all in man
make[3]: Nothing to be done for `all'.
Making all in pdf
make[3]: Nothing to be done for `all'.
Making all in ps
make[3]: Nothing to be done for `all'.
make[3]: Nothing to be done for `all-am'.
Making all in dict
make[2]: Nothing to be done for `all'.
Making all in include
Making all in tk
make[3]: Nothing to be done for `all'.
make[3]: Nothing to be done for `all-am'.
Making all in lib
Making all in wnres
make[3]: Nothing to be done for `all'.
make[3]: Nothing to be done for `all-am'.
Making all in src
if /usr/bin/gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../include -I/usr/local/include -I/usr/X11/include -I/usr/local/include -I.. -I../include -I/usr/local/include -I/usr/X11/include -I/usr/local/include    -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -fpermissive -MT wishwn-stubs.o -MD -MP -MF ".deps/wishwn-stubs.Tpo" -c -o wishwn-stubs.o `test -f 'stubs.c' || echo './'`stubs.c; \
then mv -f ".deps/wishwn-stubs.Tpo" ".deps/wishwn-stubs.Po"; else rm -f ".deps/wishwn-stubs.Tpo"; exit 1; fi
clang: warning: -lX11: 'linker' input unused
clang: warning: argument unused during compilation: '-L/usr/X11R6/lib'
stubs.c:43:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = 
      ~~~~~~    ^
stubs.c:55:14: error: no member named 'result' in 'struct Tcl_Interp'
   interp -> result = bitfieldstr;
   ~~~~~~    ^
stubs.c:72:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: bit bitnum";
      ~~~~~~    ^
stubs.c:78:14: error: no member named 'result' in 'struct Tcl_Interp'
   interp -> result = bitfieldstr;
   ~~~~~~    ^
stubs.c:92:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = 
      ~~~~~~    ^
stubs.c:105:14: error: no member named 'result' in 'struct Tcl_Interp'
   interp -> result = resultbuf;
   ~~~~~~    ^
stubs.c:117:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: glosses [1 | 0]";
      ~~~~~~    ^
stubs.c:132:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: fileinfo [1 | 0]";
      ~~~~~~    ^
stubs.c:147:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: byteoffset [1 | 0]";
      ~~~~~~    ^
stubs.c:162:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: senseflag [1 | 0]";
      ~~~~~~    ^
stubs.c:178:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: contextualhelp partofspeechnum searchtypenum";
      ~~~~~~    ^
stubs.c:183:14: error: no member named 'result' in 'struct Tcl_Interp'
   interp -> result = helptext[pos][searchtype];
   ~~~~~~    ^
stubs.c:193:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: reopendb";
      ~~~~~~    ^
stubs.c:207:17: error: no member named 'result' in 'struct Tcl_Interp'
      interp -> result = "usage: abortsearch";
      ~~~~~~    ^
14 errors generated.
make[2]: *** [wishwn-stubs.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

请告诉我如何解决这个问题。如果问题与Tcl / TK有关,您能否请说明正确的安装方法。谢谢。

感谢@DonalFellows提供的解决方案。对于任何遇到相同问题的人,我已经在此处上传了编辑后受影响的文件:stubs.c。该文件应放入此目录中:WordNet-3.0/src/ - user692704
1个回答

9

直接访问 interp->result!哦,那个现在非常过时

解决方法

最好的办法是使用 Tcl 8.5 或 8.4 进行构建(在这些版本中,不建议使用这种编码模式),但是您可以通过向编译器传递 -DUSE_INTERP_RESULT 标志使其在 8.6 中正常工作。如果您这样做,将会收到警告,但这比硬错误要好,对吗?

正确修复

每个位置都应该被更改为使用 Tcl_SetResult,例如:

interp->result = "usage: glosses [1 | 0]";

Tcl_SetResult(interp, "usage: glosses [1 | 0]", TCL_DYNAMIC);

好的,在这种情况下,TCL_DYNAMIC 可以替换为 TCL_STATIC,但我们最好进行防御性编程;开销实际上是零。

请注意,Tcl_SetResult API 已经在 Tcl 中支持了几十年。更改使用它不会阻止旧版本的代码构建。


弃用的原因是什么?它破坏了内存管理的效率,需要进行相当可怕的内部操作才能使一切正确。所以我们打算在Tcl 9.0中抛弃那段代码,并且已经在8.6版本中强烈不推荐使用。 - Donal Fellows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接