• NS2中解决nam [code omitted because of length]错误

    日期:2009-09-03 | 分类:linux

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://qhwang.blogbus.com/logs/45660514.html


    注意:
    博文已迁至新博客,请查看新博文http://www.eyelifes.net/?p=159

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

    >nam

    提示出现下列错误

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

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

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

     


    收藏到:Del.icio.us




    评论

  • 楼主,我打了补丁之后再装了一遍(不过装到最后提示说 tcl8.4.5 make
    failed)
    再运行例子这个问题还是存在呢,这是为什么呢?
    $ ns example2.tcl
    Administrator@CD7D5256FAE5491 /home/administrator/ns-allinone-2.28/ns-2.28/ns-tutorial/examples
    $ 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
    }"
  • 改了,没有变化 啊
    victor0396回复lib说:
    把你的问题贴出来
    2009-09-18 20:26:17