使用ns-allinone-2.35时终端tclsh路径异常,会影响TCL文件执行吗?
关于ns-allinone-2.35启动提示的问题解答
你遇到的这个提示其实是ns的警告信息,不是致命错误,咱们一步步拆解来看:
When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6 but it doesn't seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfigure and rebuild ns if this is a problem.
这个提示到底说啥?
当初你编译ns-allinone-2.35的时候,它找到了/usr/bin/tclsh8.6这个符合要求的TCL解释器,并且把这个路径记录下来了。但现在这个路径下的文件要么被删除、要么被移动了,所以ns只能退而求其次,去用你系统PATH环境变量里第一个能找到的tclsh版本。
会不会导致TCL脚本无法正常执行?
分两种情况来看:
- 大概率能正常运行:如果你的
PATH里第一个tclsh是8.5或者8.6版本,ns-2.35对这两个版本的兼容性非常好,绝大多数日常的TCL仿真脚本都能正常执行——这个警告只是提醒你环境有变化,不会直接搞挂脚本。 - 可能出现兼容性问题:如果你的
tclsh是8.4及以下的旧版本,或者是9.x这类新版本,就可能出现问题:比如某些TCL语法不支持,或者ns和TCL的绑定逻辑出错,导致脚本运行时崩溃、报错,甚至完全跑不起来。
给你几个实用的解决建议
- 先查当前用的
tclsh版本:在终端敲tclsh --version,看看输出的版本号 - 如果能找到合适的
tclsh8.6,可以手动指定它来运行ns:比如/usr/bin/tclsh8.6 ns your_script.tcl - 如果确实找不到
tclsh8.6了,最好重新编译ns:进入ns-allinone-2.35的目录,先执行make clean清理旧编译文件,然后./configure重新适配当前系统的TCL版本,最后make重新编译
内容的提问来源于stack exchange,提问作者Raihanul Alam Hridoy
相关产品推荐
相关产品推荐

