安装Leach协议的步骤:
1. 打开cywin,进入目录/ns-allinone-2.28/ns-2.28,输入startxwin.bat启动小窗口。
2. 在小窗口中,进入目录/ns-allinone-2.28/ns-2.28,将mit.tar.gz考到此目录下。
3. 先将目录/ns-allinone-2.28/ns-2.28下的文件都备份一下,以便以后我们运行的时候出问题时,可以回来对着原始的文件查找。
4. 输入gunzip mit.tar.gz解压
5. 输入tar –xvf mit.tar解压,这样我们即把Leach协议装到了我们的工作环境中。
但是,这时还不能运行。需要有一些修改。还有一点就是,这样安装进来的文件会把原来的相关文件给覆盖,也就是说,以前添加的协议将不能运行。所以这种方法行不通。
下面,我们就要解决这个问题,既不让覆盖我们以前添加的协议,也使得我们的新添加的协议也能运行,那么这种方法就比较复杂了,需要的人工劳动多了一点。
6. 首先我们先找个目录把mit.tar.gz文件解压开来,一开始我是用的winrar解压的,但是后来发现解压出来的文件有的不全,所以我还是使用的gunzip mit.tar.gz和tar –xvf mit.tar解压,但是不直接解压到目录/ns-allinone-2.28/ns-2.28下了。
7. 将解压出来的文件A一一的对应我们/ns-allinone-2.28/ns-2.28目录下的文件B进行修改,将A中与B内容不同的地方,添加进B去,切记,不是完全复制,是添加进去,而B中多出来的内容,也许是你以前添加进去的协议,不要删掉。注意一点,添加的过程中,声明变量的地方,有时会是两种声明方式,其中一种被注释掉了,这时,如果需要更改声明另一种方式时,一定要把第一种注释掉,避免重复声明的错误产生。
8. 强调一点,mac/channel.cc文件中:
distCST_ = TwoRayGetDist(wifp->getCSThresh(), wifp->getPt(), 1.0, 1.0, highestZ , highestZ);
改成
distCST_ = wifp->getDist(wifp->getCSThresh(), wifp->getPt(), 1.0, 1.0,
highestZ , highestZ, wifp->getL(),
wifp->getLambda());
9. mac/wireless-phy.cc文件中的(node*)改成(MobileNode*)
10. 修改MakeFile文件,按照下面三步来进行:
(1)将DMIT_uAMPS添加到DEFINE行的最后,即为
DEFINE = -DTCP_DELAY_BIND_ALL …… -Drng_test -DMIT_uAMPS
(2) 将I./mit/rca I./mit/uAMPS 添加到 INCLUDE列的后面,即为
INCLUDES = \
……
-I./diffusion3/lib/main -I./diffusion3/lib \
-I./diffusion3/lib/nr -I./diffusion3/ns \
-I./diffusion3/filter_core -I./asim/ -I./qs \
-I./mit/rca -I./mit/uAMPS \
……
11. 将代码
mit/rca/energy.o mit/rca/rcagent.o \
mit/rca/rca-ll.o mit/rca/resource.o \
mac/mac-sensor-timers.o mac/mac-sensor.o mit/uAMPS/bsagent.o \
添加到代码gaf/gaf.o \之前
12. 将MakeFile文件中的mit/mit.o mit/mit注销掉。
这样,文件我们就都修改完了,下面就是编译了,即需要make了。
13. 进入到/ns-allinone-2.28/ns-2.28目录下,输入make clean
14. 如果没有出错,输入make,这时就需要很长时间的等待了。
15. 如果你改的文件是makefile.in,那么应该有提示说你的makefile.in文件比make文件新,需要重新configure,这时输入
./configure
即可。
16. make成功后,我们就要测试一下我们的Leach文件是否能够运行了。这时,你也许会直接输入
./test
估计肯定会有Line3和Line5行的提示错误,要处理这个问题,只需打开test文件,将里面的代码改为:
#!/bin/bash
cd tcl/ex
ns wireless-demo-csci694.tcl
sleep 2
cd ../../
./leach_test
即可。重新运行,应该就会得到结果了,显示如下:
num_nodes is set 3
node-config
warning: Please use -channel as shown in tcl/ex/wireless-mitf.tcl
create-wireless-node
DSDV
INITIALIZE THE LIST xListHead
create-wireless-node
DSDV
create-wireless-node
DSDV
Loading connection pattern...
Loading scenario file...
Starting Simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING...
17. 这时,打开/mit/leach_sims/leach.err,也许你会看到有错误,应该是环境变量设置的问题。那么就要对环境变量进行设置,需要在.bashrc中加入环境变量
export RCA_LIBRARY=$(ns的安装目录)/mit/rca
export uAMPS_LIBRARY=$(ns的安装目录)/mit/uAMPS
注意,“ns的安装目录”要改成你自己的目录。
重新运行./test,这时打开/mit/leach_sims/leach.err,也许你还会看到有错误,应该是说环境变量找不到等问题。这时候说明你设置的环境变量没有起作用,那么你可以直接修改
mit\uAMPS\sims\uamps.tcl文件。
将代码
source $env(RCA_LIBRARY)/ns-ranode.tcl
source $env(uAMPS_LIBRARY)/ns-bsapp.tcl
source $env(uAMPS_LIBRARY)/extras.tcl
source $env(uAMPS_LIBRARY)/stats.tcl
#Uncomment these lines to use gdb to debug the c code
#source mit/uAMPS/ns-bsapp.tcl
#source mit/uAMPS/extras.tcl
#source mit/uAMPS/stats.tcl
source $env(RCA_LIBRARY)/resources/ns-resource-manager.tcl
source $env(RCA_LIBRARY)/resources/ns-energy-resource.tcl
source $env(RCA_LIBRARY)/resources/ns-neighbor-resource.tcl
修改成代码
source mit/rca/ns-ranode.tcl
source mit/uAMPS/ns-bsapp.tcl
source mit/uAMPS/extras.tcl
source mit/uAMPS/stats.tcl
source mit/rca/resources/ns-resource-manager.tcl
source mit/rca/resources/ns-energy-resource.tcl
source mit/rca/resources/ns-neighbor-resource.tcl
即可。这会再运行./test应该没有问题了,反正我的安装是没有问题了。
再次打开leach.err文件,里面出现代码:
INITIALIZE THE LIST xListHead
SORTING LISTS ...DONE!
这样就成功了。恭喜你! |