现在的位置: 首页 > 综合 > 正文

【转】NS2中解决nam [code omitted because of length]错误

2013年02月12日 ⁄ 综合 ⁄ 共 1386字 ⁄ 字号 评论关闭

转自:康庄大道http://qhwang.blogbus.com/logs/45660514.html

 

按照上篇文章安装成功NS2后,可以运行ns命令,但是却不能运行nam图形界面,输入

>nam

提示出现下列错误

[code omitted because of length]
: no event type or button # or keysym
    while executing
"bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D / 120) * 4}] units
}"
    invoked from within
"if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D)}] units
}
bind Li..."

这下可让我摸不着头脑了,因为我之前在我的机器上是成功安装NS2.34的,并且nam也是可以运行的,为什么到ns2.31就不行了呢,google了下这个问题,发现原来是由于nam调用的tk组件和xproto-7.0.13不兼容导致的(xproto-7.0.13 新添加了 GenericEvent)。

有了原因就有解决方法了,看了网上的解决方法,都说的不清不楚,网上说(以下是原话)

可以到这里下载补丁http://bugs.gentoo.org/show_bug.cgi?id=225999
或者新建一个记事本复制一下内容到里面,保存,命名为“tk-8.4.18-tkBind.patch”(将.txt后缀名改为.patch)
--- tk8.4.18-orig/generic/tkBind.c 2006-07-21 08:26:54.000000000 +0200
+++ tk8.4.18/generic/tkBind.c 2008-07-05 12:17:10.000000000 +0200
@@ -586,6 +586,9 @@
/* ColormapNotify */       COLORMAP,
/* ClientMessage */       0,
/* MappingNotify */       0,
+#ifdef GenericEvent
+ /* GenericEvent */      0,
+#endif
/* VirtualEvent */        VIRTUAL,
/* Activate */             ACTIVATE,
/* Deactivate */           ACTIVATE,

我按照上述方法试了一下,没有成功,很郁闷。后来经过一段时间的摸索,终于成功了,原来

http://bugs.gentoo.org/show_bug.cgi?id=225999这里的#comment2是其所说的补丁

然后我按其说的建个文档输入上树内容,打补丁,出现了一些错误

后来学习了下patch的用法于patch文件的语法,终于有了点头脑(见我的转载文章:转载 Linux下patch的制作和应用)

原来作者的意思就是在tk-8.4.14/generic/tbBind.c的第588行添加:

#ifdef GenericEvent
/* GenericEvent */      0,
#endif

后来我就干脆不用补丁了,而是自己手动修改。

然后重新安装就可以了!就这么简单。

抱歉!评论已关闭.