【转】Leach协议学习(1)——NS2.27+leach协议安装

转自:http://hi.baidu.com/jerry_916/blog/item/ab630c32391f944aac4b5f3e.html

 

 

1、 WinXP+Cygwin+NS2.27安装(略)

2、 Leach安装

(1)下载 http://www.internetworkflow.com/downloads/ns2leach/mit.tar.gz

(2) 安装

$ cd ns-allinone-2.27/ns-2.27

$ gunzip mit.tar.gz

$ tar -xvf mit.tar

$ vi Makefile  

//添加-DMIT_uAMPS到DEFINE列表中; (第60行)

//添加-I./mit/rca -I./mit/uAMPS到INCLUDES列表中;(第71行)
// 将下列内容添加到gaf/gaf.o /这一行之前(第202行)
//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 /

// -lintl /这一行去掉或注释掉(第76行)

$ make clean

$ make

$ vi test

//修改如下:

// #!/bin/bash
// cd tcl/ex
// ns wireless-demo-csci694.tcl
// sleep 2
// cd ../../
//./leach_test

$ vi leach_test

//在ns tcl/ex/wireless.tcl /前增加以下语句(第37行)

//RCA_LIBRARY=mit/rca
//export RCA_LIBRARY
//uAMPS_LIBRARY=mit/uAMPS
//export uAMPS_LIBRARY

$ cd

$ vi .bashrc

//在最后一行加入

//export RCA_LIBRARY=$home/Administrator/ns-allinone-2.27/ns-2.27/mit/rca
//export uAMPS_LIBRARY=$home/Administrator/ns-allinone-2.27/ns-2.27/mit/uAMPS

$ cd ns-allinone-2.27/ns-2.27

$ ./test

//显示结果

 

 

 

3、 安装时遇到的问题及解决方案

 

(1)make错误如下图

 

 

解决办法:

根据错误提示把wireless-phy.cc文件的第320行和321行的min改为MIN即可。

(2)make出现错误如下图

解决办法:

 

 

修改

D:/cygwin/home/Administrator/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_

或者将该文件的第一行和最后一行注释掉即可。

(3)./test出现warning如下:

 

 

 

D:/cygwin/home/Administrator/ns-allinone-2.27/ns-2.27/tcl/lib/ns_default.tcl文件第692行加入7个初始值如下:

Phy/WirelessPhy set alive_ 1

Phy/WirelessPhy set Efriss_amp_ 100 * 1e-12

Phy/WirelessPhy set Etwo_ray_amp_ 0.013 * 1e-12

Phy/WirelessPhy set EXcvr_ 50 * 1e-9

Phy/WirelessPhy set sleep_ 0

Phy/WirelessPhy set ss_ 1

Phy/WirelessPhy set dist_ 0

具体的初始值应该对照

D:/cygwin/home/Administrator/ns-allinone-2.27/ns-2.27/mac/wireless-phy.cc输入

(第95行,第97-99行,第104-105行,第107行)

(4)测试脚本为tcl/ex/wireless.tcl,老提示couldn't read file "tcl/ lib/ ns-mobilenode.tcl":no such file or directory while executing "source.orig tcl/ lib/ ns-mobilenode.tcl"

解决办法:路径的问题,直接运行tcl/ex/目录下的wireless.tcl时 将source tcl/ lib/ ns-mobilenode.tcl改成source ../ lib/ ns-mobilenode.tcl, 但你是测试leach协议 应该从ns-x.xx目录下直接运行./leach_test,这时就不用改了

(5)Installation: A possible problem with CPP_NAMESPACE 

ns-2.27/indep-utils/cmu-scen-gen/setdest/Makefile,
ns-2.27/indep-utils/webtrace-conv/nlanr/Makefile, and
ns-2.27/indep-utils/webtrace-conv/dec/Makefile,
needed to be modified in order to fix a bug in ISI's distribution. The bug
caused a compile-time error that looked like this:

g++ -c -Dstand_alone -DSTL_NAMESPACE=@STL_NAMESPACE@ -o setdest.o setdest.cc
In file included from ../../../config.h:54,
from setdest.h:5,
from setdest.cc:57:
../../../autoconf.h:85: Error: namespace `CPP_NAMESPACE' undeclared
setdest.cc:71:1: warning: "INFINITY" redefined
In file included from /usr/include/math.h:40,
from setdest.cc:43:
/usr/include/bits/mathdef.h:35:1: warning: this is the location of the previous definition
make[1]: *** [setdest.o] Error 1
make[1]: Leaving directory `/home/iandow/netsim/ns-allinone-2.27/ns-2.27/indep-utils/cmu-scen-gen/setdest'
make[1]: Entering directory `/home/iandow/netsim/ns-allinone-2.27/ns-2.27/indep-utils/webtrace-conv/dec'

To fix the bug, edit ns-2.27/indep-utils/cmu-scen-gen/setdest/Makefile and
change this line:
DEFINE = -Dstand_alone -DSTL_NAMESPACE=@STL_NAMESPACE@
to this line:
DEFINE = -Dstand_alone -DSTL_NAMESPACE=@STL_NAMESPACE@ -DCPP_NAMESPACE=std

In the other two makefiles, append -DCPP_NAMESPACE=std to CFLAGS.

I discovered that fix by searching the NS news database[2] for
"CPP_NAMESPACE".

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LEACH(Low-Energy Adaptive Clustering Hierarchy)是一种用于无线传感器网络(WSN)中的能量有效的聚类协议。而LEACH-C(Centralized LEACH)是对LEACH协议的改进和扩展。 以下是LEACH协议与LEACH-C协议的一些区别: 1. 集中式与分布式:LEACH协议是一种分布式协议,其中每个节点都有相同的角色和权力。LEACH-C协议引入了一个集中式基站,负责全局决策和资源分配。 2. 聚类过程:在LEACH协议中,节点通过随机选择成为簇头节点,并通过广播通信方式进行聚类。在LEACH-C协议中,簇头节点的选择由集中式基站决定,并通过双向通信方式进行聚类。 3. 能耗均衡:LEACH协议中,所有节点具有相同的机会成为簇头节点,但这可能导致能量不均衡的问题。LEACH-C协议使用集中式基站来选择簇头节点,以实现更均衡的能耗分布。 4. 数据传输:LEACH协议中,每个节点将数据直接发送给簇头节点,然后由簇头节点进行数据聚合和发。LEACH-C协议中,数据传输由集中式基站负责,基站收集所有节点的数据并进行处理。 5. 网络管理:LEACH-C协议引入了集中式基站,可以更好地管理整个网络,包括节点注册、能量管理、路由决策等方面。 需要注意的是,LEACH-C协议相对于LEACH协议来说,引入了更多的复杂性和计算负载。选择使用哪种协议取决于具体的应用需求和网络规模。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值