然后要进入ns-allinone-2.27目录下,这里使用的命令和DOS的命令一样,在cygwin中输入
cdns-allinone-2.27回车
发现那行绿字后面多了一行黄字,就是说明你现在在ns-allinone-2.27目录下,然后在这个目录下安装ns2,还是在cygwin中输入命令
./install回车
等待,有一堆东西在执行,如下图
这里会有一个选择的东西,要选择y,回车,继续安装,这个要等很长时间,不到一个小时,如果安装顺利的话,安装好的会出现下图这个样子,就说明安装成功了
安装完之后先别急着高兴,这里需要设置环境参数,本人在这个地方由于理解错误,造成了后段进行停滞,由高人指点,才发现自己有多笨,这里一定要和菜菜鸟们说清楚,以免发生类似我的笑话。
参考网页上面都说,请编辑家目录下的.bashrc,把ns2相关的路径加入PATH中
exportNS_HOME=‘pwd’/ns-allinone-2.27
exportPATH=$NS_HOME/tcl8.4.5/unix:
$NS_HOME/tk8.4.5/unix:
$NS_HOME/bin:
$PATH
exportLD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:
$NS_HOME/tk8.4.5/unix:
$NS_HOME/otcl-1.8:
$NS_HOME/lib:
$LD_LIBRARY_PATH
exportTCL_LIBRARY=$NS_HOME/tcl8.4.5/library
【第一句的‘pwd’要换成自己的对应目录,如我的是exportNS_HOME=/home/Administrator/ns-allinone-2.27,这个要根据自己的改】
就是在这个设置环境变量的时候,我开始以为是在cygwin中输入这些命令,到最后才知道,其实应该是用代码编辑器打开你的.bashrc文件,然后把这4句话写到.bashrc文件的最后一行,然后保存,这里大家要自己一个一个自己打,因为你复制粘贴的可能会多一个或少一个空格,好像都有影响,我给大家看一下
其实应该是这个样子的,这四句就是这上面从111-114行的东西,而115.116行的命令在后面会遇到,大家到这里先写入这4句,然后保存。
这样基本就安装正确了,然后下面可以检查一下ns2是否安装正确
参考网页上说有一个检查方法,但是时间很长,我这里不推荐,我推荐那个出现例子的方法。
在cygwin中的ns-allinone-2.27目录下,如果你不知道怎么进入这个目录下,就先把cygwin窗口关掉,然后再打开,然后还是cdns-allinone-2.27回车,这个地方由于之后的版本改进问题,使得nam.exe不能自动编译出来,新手找一些老手要以前编译好的nam.exe文件放到C:
\cygwin\home\Administrator\ns-allinone-2.27\nam-1.10文件夹下,nam.exe的快捷文件放到C:
\cygwin\home\Administrator\ns-allinone-2.27\bin文件夹下,再看一下你的C:
\cygwin\home\Administrator\ns-allinone-2.27\ns-2.27下有没有ns.exe,如果没有还是需要找一个放过去。
否则后面会很麻烦,之后输入startxwin.bat回车,稍等,出来一个Xwin窗口在这个窗口中输入
cdns-allinone-2.27/ns-2.27/ns-tutorial/examples回车,然后输入nsexample2.tcl回车
之后会跳出一个例子
然后按右图上面的播放键,会看到有运行的过程
这样就说明你安好了,挺有成就感的吧,已经2/3了。
三、安装mit
这步也就是安装leach协议了,下载leach2.27,地址:
将mit.tar.gz放在ns-allinone-2.27/ns-2.27目录下
这个图是我的,一样的,这种压缩文件,不要右键解压,还是用命令解压的。
打开cygwin,进入到ns-allinone-2.27/ns-2.27目录下,就是如果你是重新打开的cygwin,那么输入命令cdns-allinone-2.27/ns-2.27回车,便进入到ns-allinone-2.27/ns-2.27目录下了。
下面解压mit.tar.gz。
输入命令gunzipmit.tar.gz回车
tar-xvfmit.tar回车
等待一会,又是一堆东西在执行,等跳出来以后,需要修改ns-allinone-2.27/ns-2.27目录下的makefile文件,这里还是要注意,是用代码编辑器打开makefile文件,这个文件在C:
\cygwin\home\Administrator\ns-allinone-2.27\ns-2.27里
添加-DMIT_uAMPS到DEFINE列表中;
添加-I./mit/rca-I./mit/uAMPS到INCLUDES列表中;
将下列内容添加到gaf/gaf.o\这一行之前
mit/rca/energy.omit/rca/rcagent.o\
mit/rca/rca-ll.omit/rca/resource.o\
mac/mac-sensor-timers.omac/mac-sensor.omit/uAMPS/bsagent.o\
这里给个参考
或者大家看我的图
DEFINE和INCLUDES在60和62行
这行是60行DEFINE的结尾修改完的
这个是62行INCLUDES后面修改完的,大家也是自己打,不要复制粘贴
OBJ_CC=\这行在149,里面找到gaf/gaf.o\这句,在它的前面打mit/rca/energy.omit/rca/rcagent.o\
mit/rca/rca-ll.omit/rca/resource.o\
mac/mac-sensor-timers.omac/mac-sensor.omit/uAMPS/bsagent.o\
也就是202-204行,下面是我的例子
这里做完之后,如果是新朋友的话,我给你一个建议,因为新的NS2有一些问题,我再后来安装的时候出现过,经过一番努力终于成功,你检查一下自己的Makefile文件第76行,是否有-lintl\这个出现,如果有,把这一行去掉,否则后面编译不过去,ns.exe文件找不到,很麻烦的。
这些修改好之后保存,回到cygwin窗口,输入makeclean清除以前的编译结果,等待一会,执行完之后,再输入nohupmake2>error.log>make.log&进行编译,其实这里直接输入make也是一样的,前者是把输出结果放到make.log文件里,后者是直接显示结果,还是用make比较好,有错误可以及时发现,这里可能会出现错误,按照错误提示对应的文件和对应的行,自己修改,没有错误就可以编译成功。
修改test文件,和刚才的makefile文件同目录
还是用代码编辑器打开这个文件,修改的结果是
#!
/bin/bash
cdtcl/ex
nswireless-demo-csci694.tcl
sleep2
cd../../
./leach_test
好像是第6行的位置串了一下,反正这是最后结果
添加leach协议运行所需的环境参数,还是这个文件夹里,找到leach_test文件
用代码编辑器打开它,在nstcl/ex/wireless.tcl \前增加以下语句
RCA_LIBRARY=mit/rca
exportRCA_LIBRARY
uAMPS_LIBRARY=mit/uAMPS
exportuAMPS_LIBRARY
37-40句,见图
之后保存,然后向上返回两级目录,到C:
\cygwin\home\Administrator下,找到最开始的.bashrc,添加环境参数
用代码编辑器打开它,在最后面加入
exportRCA_LIBRARY=$(NS的安装目录)/mit/rca
exportuAMPS_LIBRARY=$(NS的安装目录)//mit/uAMPS
我的就是输入
exportRCA_LIBRARY=$home/Administrator/ns-allinone-2.27/ns-2.27/mit/rca
exportuAMPS_LIBRARY=$home/Administrator/ns-allinone-2.27/ns-2.27/mit/uAMPS
然后保存,这样leach基本就是按好了
在cygwin中,进入到ns-2.27目录下(会进了吧),输入./test回车,会看到运行结果。
这里还有一点,新朋友注意,以前的时候呢直接./test回车是下面这个结果,
看到没,如果你出现这个就是说明你成功了,读读上面的内容,反正我是不明白什么意思,还需继续学习。
但如果你出现的是这样的画面
其实你也不用担心的,你的协议是可以正常运行的,这里你只需要按照提示加七个初始值,在tcl/lib下的ns_default.tcl文件第692行加入7个初始值,具体的初始值应该对照C:
\cygwin\home\Administrator\ns-allinone-2.27\ns-2.27\mac下的wireless-phy.cc里面的输入,看一下效果
这样才能出现和之前一样的效果。
这个地方有一点是之前忽略的,这里做好之后需要makeclean,然后make,make之后会有错误发生,按照提示修改两个地方文件mac中的wireless-phy.cc出现一个错误,可以参看编译过程中的错误提示,然后找到相对应的文件,把“min”改成“MIN”(需要修改两处320行和321行),然后再在命令行中输入make,这里make之后还是有错误,起先以为这个错误是没办法改掉,只要不影响什么就可以,后来一位网友说把C:
\cygwin\ns-allinone-2.27\ns-2.27\indep-utils\webtrace-conv\dec\my-endian.h中
#ifndef_ENDIAN_H_
#define_ENDIAN_H_
改为
#ifndef_MY_ENDIAN_H_
#define_MY_ENDIAN_H_
就可以了,之后再./leach_test,这才是运行了leach协议。
看一下mit/leach_sims文件夹里的东西,leach.out是输出数据。