/*------------------------------------------------------------------------------------------------------------------------*/
问题:在高版本的linux平台下如何解决安装ns2.27遇到的各种问题?
解决方案:迫切的想使用ns2.27,但是现在的使用的g++版本比较高,语法检查更严格,以前的ns平台好多语法都要出错。会遇到各种问题。希望,你在看到此帖时,不要放弃安装,耐心的搜索解决方法和总结,总会解决这些小问题的。博主最开始也想放弃了,不过最后还是成功安装了低版本的ns2.27. 安装成功后也会非常高兴。
这方面的问题,网上有很多总结,我参考最多的是这个帖子:http://www.huomo.cn/os/article-133b4.html ,遇到错误,直接将关键字在网页里使用搜索就可以找到,有些问题,不在这个帖子里,有些问题也不是按顺序出现的。
问题大概的一些总结和分析:
queue/cbq.cc:112: error: ISO C++ forbids declaration of ‘CBQueue’ with no type
是类的缺失,加一个类的声明即可。同样的还有J:错误:ISO C++ 不允许声明无类型的‘toraAgent’。
还有一类是多余的类的限定,直接打开对应的文件,然后找到该文件所对应的行,删掉类的限定就可以了。
还可能要打一个补丁文件:ns227-gcc34.patch,下载后,放在跟安装文件同一个目录下,使用:
patch -p0 < ns227-gcc34.patch就可以了。
有时会遇到strstr函数从const char *到 char *的无效转换的问题,直接在对应函数前面使用(char *)来强制转化即可。
/*------------------------------------------------------------------------------------------------------------------------*/
解决方案:在tk-8.4.14/generic/tkBind.c的第588行添加:
#ifdef GenericEvent
0,
#endif
修改该文件后,重新安装就可以了(网上还有使用补丁来解决的方法,个人感觉这种方法更简单和方便一些)。
/*------------------------------------------------------------------------------------------------------------------------*/
问题描述:多个版本的NS2 如何共存,可以同时使用(好像协议对ns的版本支持有一些要求,我的需求是要仿真LEACH协议,目前的资料都是在ns2.27上仿真,技术比较搓,就想先搭建个ns2.27,学习下,再考虑移植到其它平台上),就是像ns这个命令同时区分版本的问题,只要将ns根据版本分成多个名字即可。
解决方案(fedora13平台,ns的版本是ns2.31和ns2.27):
假设已经成功安装了ns2.31,我的安装目录在/opt/ns-allinone-2.31/.
切换到目录 /opt/ns-allinone-2.31/bin,使用file ns命令查看链接关系,得到其链接关系:symbolic link to `/opt/ns-allinone-2.31/ns-2.31/ns'。
使用命令:
ln -s /opt/ns-allinone-2.31/ns-2.31/ns ns2.31 来创建一个新的链接
然后使用命令:
rm ns,删除这个链接
在终端下输入ns2.31,就可以显示%,表明已经更名成功。同样的道理可以更换nam等链接的名字,比如:
ln -s /opt/ns-allinone-2.31/nam-1.13/nam nam2.31
rm nam
同样的道理,假设成功安装了ns2.27,安装目录为/opt/ns-allinone-2.27.
使用同样的方法,将ns2.27中的ns/nam改成ns2.27和nam2.31.
贴上~/.bashrc(注意是在普通用户,而非root用户下的配置文件)中的路径相关东西:
export PATH="$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin:/opt/ns-allinone-2.31/bin:/opt/ns-allinone-2.31/tcl8.4.14/unix:/opt/ns-allinone-2.31/tk8.4.14/unix:/opt/ns-allinone-2.27/bin:/opt/ns-allinone-2.27/tcl8.4.5/unix:/opt/ns-allinone-2.27/tk8.4.5/unix"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/ns-allinone-2.31/otcl-1.13:/opt/ns-allinone-2.31/lib:/opt/ns-allinone-2.27/otcl-1.8:/opt/ns-allinone-2.27/lib"
export TCL_LIBRARY="$TCL_LIBRARY:/opt/ns-allinone-2.31/tcl8.4.14/library:/opt/ns-allinone-2.27/tcl8.4.5/library" 使用命令source ~/.bashrc就可以使该配置文件生效而不用注销用户或者重启系统。