本文参照了中的方法,成功的移植了leach协议,希望对你有所帮助
http://www.linuxquestions.org/questions/linux-software-2/how-to-integrate-the-resource-energy-leach-class-into-ns-2-34-a-870368/
注意:将Leach-setup.sh中的/opt/ns-allinone-2.34 替换为自己的ns-allinone-2.34的目录,例如,/home/wsn/ns-allinone-2.34
假设ns-2.34 的编译器为gcc-4.4ns-2.34 安装目录是/home/wsn/ns-allinone-2.34
第一步:下载 ns-234-leach.tar.gz ,并将其拷贝到 /home/wsn/ns-allinone-2.34/ns-2.34。下载网址为
https://docs.google.com/uc?id=0BzLWx...CNWG1NQK&hl=en
第二步:下载 leach-setup.sh 并拷贝到 /home/wsn/ns-allinone-2.34/ns-2.34 下载网址为
https://docs.google.com/uc?id=0BzLWx...CJSU5ZYG&hl=en
第三步:将Leach-setup.sh中所有的/opt/...替换为自己的ns-allinone-2.34的目录,/home/wsn/....
第四步:切换到/home/wsn/ns-allinone-2.34/ns-2.34/目录下,运行leach-setup.sh
wsn@ubuntu:~$ cd /home/wsn/ns-allinone-2.34/ns-2.34/
wsn@ubuntu:/home/wsn/ns-allinone-2.34/ns-2.34$ bash leach-setup.sh
第五步:修改Makefile” & “Makefile.in 文件:如下所示
CC = gcc-4.4
CPP = g++-4.4
第六步:修改 trace/cmu-trace.h 文件
在第60行添加下面定义
#ifdef MIT_uAMPS
#define ADV_CHAR 'A'
#define REQ_CHAR 'R'
#define DATA_CHAR 'D'
#endif
在第167行添加
#ifdef MIT_uAMPS
void format_rca(Packet *p, int offset);
#endif
第七步:配置并重新编译ns-2.34,并进行 ./configure , make clean ,make
wsn@ubuntu:/opt/ns-allinone-2.34/ns-2.34$./configure
wsn@ubuntu:/opt/ns-allinone-2.34/ns-2.34$make clean
wsn@ubuntu:/opt/ns-allinone-2.34/ns-2.34$make
第八步:make成功后,我们就要测试一下我们的Leach文件是否能够运行了。
这时,直接输入./test,估计肯定会有Line3和Line5行的提示错误,要处理这个问题,只需打开test文件,将里面的代码改为(注意红色部分位置):
#!/bin/bash
cd tcl/exns wireless-demo-csci694.tcl
sleep 2
cd ../../
./leach_test
即可。再次输入./test运行,结果如果如下所示,就说明成功了。
[root@localhostns-2.34]# ./test
num_nodes is set3
warning: Please use-channel as shown in tcl/ex/wireless-mitf.tcl
INITIALIZE THE LISTxListHead
Loading connectionpattern...
thefile:../mobility/scene/cbr-3-test
Loading scenariofile...
StartingSimulation...
channel.cc:sendUp -Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5,
SORTING LISTS...DONE!
NSEXITING...
在tcl/lib下的ns_default.tcl文件第692行加入7个初始值,具体的初始值应该对照mac文件下的wireless-phy.cc 值输入,如下所示:
Phy/WirelessPhy set alive_
Phy/WirelessPhy set Efriss_amp_
Phy set Etwo_ray_amp_
Phy/WirelessPhy set EXcvr_
Phy/WirelessPhy set sleep_
Phy/WirelessPhy set ss_
Phy/WirelessPhy set dist_
注意:这样修改之后,要重新编译。即先执行make clean,再执行make。make成功后,再次运行./test,得到第一次的结果。
第十步:这时,打开/mit/leach_sims文件夹,查看leach.err和leach.out文件,如果leach.out为空,leach.er显示找不到mit/rca下的文件,应该是环境变量设置有问题,需要在.bashrc中加入环境变量
export RCA_LIBRARY=/home/wsn/ns-allinone-2.34/ns-2.34/mit/rca
export uAMPS_LIBRARY=/home/wsn/ns-allinone-2.34/ns-2.34/mit/uAMPS
注意,“home/wsn”要改成你自己的安装目录。
重新运行,应该就会得到结果了,显示如下:
[root@localhost ns-2.34]# ./test
num_nodes is set 3
warning: Please use -channel as shown intcl/ex/wireless-mitf.tcl
INITIALIZE THE LIST xListHead
Loading connection pattern...
the file:../mobility/scene/cbr-3-test
Loading scenario file...
Starting Simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5,
SORTING LISTS ...DONE!
NS EXITING...
这时再运行./test应该没有问题了,反正我的安装是没有问题了。
再次打开leach.err文件,里面出现代码:
INITIALIZE THE LIST xListHead
SORTING LISTS ...DONE!
leach.out文件大小也随时间增加,同时产生leach.alive,leach.da