Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux NS2命令名无效_Linux_Ubuntu_Tcl_Simulator_Ns2 - Fatal编程技术网

Linux NS2命令名无效

Linux NS2命令名无效,linux,ubuntu,tcl,simulator,ns2,Linux,Ubuntu,Tcl,Simulator,Ns2,我正在使用网络模拟器2(NS2)来实现/评估MAC协议。我在Ubuntu 12.04上运行2.35版 我已按照此处的说明设置NS2: 它似乎可以工作,因为我可以在末尾键入“ns”并获得%符号。我似乎遇到的问题是,它似乎无法从TCL文件中识别我的协议名称。它给了我一个错误: invalid command name "Mac/pa3" while executing "$val(mac) set repeatTx_ $val(repeatTimes)"

我正在使用网络模拟器2(NS2)来实现/评估MAC协议。我在Ubuntu 12.04上运行2.35版

我已按照此处的说明设置NS2:

它似乎可以工作,因为我可以在末尾键入“ns”并获得%符号。我似乎遇到的问题是,它似乎无法从TCL文件中识别我的协议名称。它给了我一个错误:

    invalid command name "Mac/pa3"
         while executing
    "$val(mac) set repeatTx_ $val(repeatTimes)"
      (file "pa3.tcl" line 45)
其中第45行如下所示:

    $val(mac) set repeatTx_ $val(repeatTimes);
它似乎不认识我的协议的名称。我分别在pa3.cc和pa3.h文件中实现了该协议。当我在ns-2.34目录中输入./configure,然后输入“makeclean”,然后输入“make”时,它会编译而不出错,并生成pa3.o对象文件

起初我以为我的TCL文件被破坏了,但结果证明,如果我将名称更改为802_11,它就可以与我的TCL文件配合使用。我认为第45行提到的错误被标记了,因为它认为我没有安装名为pa3的协议

请告诉我,因为过去几天我一直在寻找死胡同。有没有人使用过NS2,可以告诉我添加您自己的协议的过程?我不想帮助评估协议,但似乎我需要让TCL文件以某种方式识别我的pa3协议。我找了又找,但我试过的都没用


谢谢。

我认为您必须在编译协议后编译它,以链接到您的代码,但这只是我头脑中的一个想法,可能需要做一些其他更改才能正确编译。谢谢您的回复。在执行以下操作后,我使用“ns TCL_file.TCL”运行TCL脚本:“./configure”“make clean”,然后使用“make”。我在目录中看到协议的.o对象文件以及所有内容。。因此,为了明确起见,我将.c、.h、.o和.tcl文件都放在“ns-2.34/mac”目录中。我解决了这个问题。我使用的是ns-2.34,它给出了提到的错误。然而,当我安装了2.35,并且做了与2.34版完全相同的事情时,它成功了。所以我猜Ubuntu的2.34版可能有问题。