Leach协议的安装日记一个月吐血奉献.docx

上传人:b****4 文档编号:6978349 上传时间:2023-05-10 格式:DOCX 页数:12 大小:21.16KB
下载 相关 举报
Leach协议的安装日记一个月吐血奉献.docx_第1页
第1页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第2页
第2页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第3页
第3页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第4页
第4页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第5页
第5页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第6页
第6页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第7页
第7页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第8页
第8页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第9页
第9页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第10页
第10页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第11页
第11页 / 共12页
Leach协议的安装日记一个月吐血奉献.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Leach协议的安装日记一个月吐血奉献.docx

《Leach协议的安装日记一个月吐血奉献.docx》由会员分享,可在线阅读,更多相关《Leach协议的安装日记一个月吐血奉献.docx(12页珍藏版)》请在冰点文库上搜索。

Leach协议的安装日记一个月吐血奉献.docx

Leach协议的安装日记一个月吐血奉献

Leach协议的安装

Leach安装步骤如下:

0.先将~ns(~ns指你的NS2安装的主目录,如我装的是NS2.30,则~ns是指NS2.30目录)目录下的所有文件做个压缩备份,以便以后修改出错时能及时的恢复过来。

1. 在cygwin/home目录下新建一个文件夹leach

命令cd/home ;mkdirleach;cdleach

2. 将Leach源码压缩包mit.tar.gz拷贝到当前目录leach中

3. 解压mit.tar.gz

命令tar–zxvfmit.tar.gz |teemituzip.txt(注意不要用winRAR解压,因会造成部分解压文件不对) mituzip.txt中将保存有解压过程中生成的文件的信息,可用作为下面修改文件时的参考

4. 用文件比较工具,对leach目录下的文件和~ns目录下面相应的文件进行修改

4.1常用的文件比较工具有BeyondCompare(我这里有安装文件可传给大家),ultraEdit的文件菜单中也带有文件比较功能(没有BeyondCompare功能强大)

4.2将下列文件(或文件夹)直接由leach目录下复制到~ns目录下:

      mit整个目录复制

leach/mac目录下的mac-sensor-timers.cc,mac-sensor-timers.h,mac-sensor.cc

      mac-sensor.h 4个文件复制到~ns/mac目录下

      leach/tcl/mobility目录下的leach-c.tcl,leach.tcl ,mte.tcl,stat-clus.tcl 4个文件复制到~ns/tcl/mobility目录下

      先将~ns/tcl/ex/wireless.tcl的文件重命名为wireless_1.tcl,再将leach/tcl/ex/wieless.tcl复制到~ns/tcl/中

      将leach目录下的test,leach_test ,package_up3个文件复制到~ns中

      4.3需要对照修改的文件列表为:

             

(1)apps/app.cc,app.h(含义为apps文件目录下的文件app.cc,app.h,以下含义相同)

             

(2)trace/cmu-trace.cc,cmu-trace.h

             (3)common/packet.h,packet.cc,mobilenode.cc

             (4)mac/channel.cc,ll.h,phy.cc,phy.h,mac.cc,cmu-trace.h,cmu-trace.cc

             mac/wireless-phy.cc,wireless-phy.h

             

             修改的方法为:

用BeyondCompare打开两边对应的文件,BeyondCompare会列出两个文件中的不同的地方,将leach目录下的文件代码段以#ifdefMIT_uAMPS开始,以#endif结束的部分复制到~ns目录下相应的文件中,复制是不要覆盖~ns目录下相应的文件中已有的代码!

保存修改过的文件

             mac/wireless-phy.cc,wireless-phy.h这两个文件比较特殊,除了上一步的修改之外还需要如下修改,在wireless-phy.h中约149行添加

      //Whyphyhasanode_andthisguyhasitalloveragain?

?

//addedbyhuangyanqing10/March/2007

#ifdefMIT_uAMPS

          MobileNode*node_;              //MobileNodetowhichinterfaceisattached.

#endif

      添加对移动节点的支持

      在wireless-phy.cc中约234行将node_=(Node*)obj;改为

//addedbyhuangyanqing10/March/2007

#ifdefMIT_uAMPS

                   node_=(MobileNode*)obj;

#else

                   node_=(Node*)obj;

#endif

添加对移动节点的支持

整个修改的过程中可参考mituzip.txt文件看相应的修改有没有做好,不要漏掉了和改错了。

5.修改~ns目录下的MakeFile

(1)将DMIT_uAMPS添加到DEFINE行的最后,即为

DEFINE =-DTCP_DELAY_BIND_ALL……-Drng_test-DMIT_uAMPS

其含义为,定义宏MIT_uAMPS,这样前面所做的修改#ifdefMIT_uAMPS开始,以#endif结束的部分的代码段就能够被编辑

(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\

……

目的为添加对路径./mit/rca和./mit/uAMPS的包含

(3)将代码

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\

添加到代码gaf/gaf.o\之前

(4)保存修改,进行编译。

       命令为:

makeclean

               make

       如果做过正确修改的话,编译是能通过的;否则对照出错的提示再次修改。

6.测试

(1)      将~ns目录下的test文件修改为

#!

/bin/bash

cdtcl/ex

nswireless-demo-csci694.tcl

sleep2

cd../../

./leach_test

(2)在.bashrc中加入环境变量

exportRCA_LIBRARY=$(ns的安装目录)/mit/rca

exportuAMPS_LIBRARY=$(ns的安装目录)/mit/uAMPS

(3)shtest看看运行的结果是否正确。

安装后make通不过,原因是以#ifdefMIT_uAMPS开始,以#endif结束的部分添加的位置不对。

一个类中有三种状态private、protect、public,添加时注意位置,否则可能造成原本是protect类型的变成了private的,在编译时产生错误。

再次make,又出现如下错误。

-I/home/wlw927/ns-allinone-2.31/include-I/usr/include

e/pcap-oproxytrace2any.oproxytrace2any.cc

proxytrace2any.cc:

Infunction`intmain(int,char**)':

proxytrace2any.cc:

120:

error:

`IsLittleEndian'undeclared(firstusethisfunction)

proxytrace2any.cc:

120:

error:

(Eachundeclaredidentifierisreportedonlyonce

foreachfunctionitappearsin.)

proxytrace2any.cc:

128:

error:

`ToOtherEndian'undeclared(firstusethisfunction)

make[1]:

***[proxytrace2any.o]Error1

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/we

btrace-conv/dec'

make[1]:

Enteringdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/epa'

make[1]:

Nothingtobedonefor`all'.

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/epa'

make[1]:

Enteringdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/nlanr'

make[1]:

Nothingtobedonefor`all'.

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/nlanr'

make[1]:

Enteringdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/ucb'

make[1]:

Nothingtobedonefor`all'.

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/ucb'

在文件d:

\cygwin\home\Administrator\ns-allinone-2.31\ns-2.31\indep-utils\webtrace-conv\dec\proxytrace2any.cc中的main函数前加入

 externintIsLittleEndian(void);

 externvoidToOtherEndian(TEntry*e);

没有变化。

我认为导致这个问题发生的原因我认为是肯定是在my_endian.h头文件定义时与别的文件冲突了,也就是说

#ifndef_ENDIAN_H_

#define_ENDIAN_H_

……

#endif

这个定义有冲突,只要将其改为

#ifndef_MY_ENDIAN_H_

#define_MY_ENDIAN_H_

#endif

我这样修改后,就能够成功进行编译了

只是这个还存在,原因不明。

make[1]:

***[proxytrace2any.o]Error1

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/we

btrace-conv/dec'

make[1]:

Enteringdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/epa'

make[1]:

Nothingtobedonefor`all'.

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/epa'

make[1]:

Enteringdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/nlanr'

make[1]:

Nothingtobedonefor`all'.

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/nlanr'

make[1]:

Enteringdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/ucb'

make[1]:

Nothingtobedonefor`all'.

make[1]:

Leavingdirectory`/home/wlw927/ns-allinone-2.31/ns-2.31/indep-utils/webtrace-conv/ucb'

将三个文件拷贝到d:

\cygwin\home\Administrator\ns-allinone-2.31\ns-2.31目录下。

执行./test

$./test

num_nodesisset3

warning:

Pleaseuse-channelasshownintcl/ex/wireless-mitf.tcl

warning:

noclassvariablePhy/WirelessPhy:

:

alive_

       seetcl-object.tclintclclforinfoaboutthiswarning.

warning:

noclassvariablePhy/WirelessPhy:

:

Efriss_amp_

warning:

noclassvariablePhy/WirelessPhy:

:

Etwo_ray_amp_

warning:

noclassvariablePhy/WirelessPhy:

:

EXcvr_

warning:

noclassvariablePhy/WirelessPhy:

:

sleep_

warning:

noclassvariablePhy/WirelessPhy:

:

ss_

warning:

noclassvariablePhy/WirelessPhy:

:

dist_

INITIALIZETHELISTxListHead

warning:

noclassvariablePhy/WirelessPhy:

:

alive_

       seetcl-object.tclintclclforinfoaboutthiswarning.

warning:

noclassvariablePhy/WirelessPhy:

:

Efriss_amp_

warning:

noclassvariablePhy/WirelessPhy:

:

Etwo_ray_amp_

warning:

noclassvariablePhy/WirelessPhy:

:

EXcvr_

warning:

noclassvariablePhy/WirelessPhy:

:

sleep_

warning:

noclassvariablePhy/WirelessPhy:

:

ss_

warning:

noclassvariablePhy/WirelessPhy:

:

dist_

warning:

noclassvariablePhy/WirelessPhy:

:

alive_

       seetcl-object.tclintclclforinfoaboutthiswarning.

warning:

noclassvariablePhy/WirelessPhy:

:

Efriss_amp_

warning:

noclassvariablePhy/WirelessPhy:

:

Etwo_ray_amp_

warning:

noclassvariablePhy/WirelessPhy:

:

EXcvr_

warning:

noclassvariablePhy/WirelessPhy:

:

sleep_

warning:

noclassvariablePhy/WirelessPhy:

:

ss_

warning:

noclassvariablePhy/WirelessPhy:

:

dist_

原因是在C++中声明的变量没有在tcl中初始化,所以打开d:

\cygwin\home\Administrator\ns-allinone-2.31\ns-2.31\tcl\lib\ns-default.tcl

在这段的下面添加

#InitializetheSharedMediainterfacewithparameterstomake

#itworklikethe914MHzLucentWaveLANDSSSradiointerface

Phy/WirelessPhysetCPThresh_10.0

Phy/WirelessPhysetCSThresh_1.559e-11

Phy/WirelessPhysetRXThresh_3.652e-10

Phy/WirelessPhysetbandwidth_2e6

Phy/WirelessPhysetPt_0.28183815

Phy/WirelessPhysetfreq_914e+6

Phy/WirelessPhysetL_1.0

Phy/WirelessPhysetalive_1

Phy/WirelessPhysetEfriss_amp_1e-12

Phy/WirelessPhysetEtwo_ray_amp_1e-13

Phy/WirelessPhysetEXcvr_1e-9

Phy/WirelessPhysetsleep_0

Phy/WirelessPhysetss_1

Phy/WirelessPhysetdist_0

再次执行./test

出现错误说找不到变量num_clusters,只好修改test文件为

#!

/usr/bin/bash

cdtcl/ex

nswireless.tcl

-scmit/uAMPS/sims/nodescen\

-rp$alg\

-x$x\

-y$y\

-nn$nn\

-stop$stop\

-eq_energy$eq_energy\

-init_energy$init_energy\

-filename$filename\

-dirname$dirname\

-topo$topology_file\

-num_clusters$num_clusters\

-bs_x$bs_x\

-bs_y$bs_y2>$dirname/$filename.err1>$dirname/$filename.out&

sleep2

cd../../

./leach_test

又出现错误,

can'tread"env(RCA_LIBRARY)":

nosuchvariable

   whileexecuting

"source$env(RCA_LIBRARY)/ns-ranode.tcl"

   (file"mit/uAMPS/sims/uamps.tcl"line9)

   invokedfromwithin

"source.origmit/uAMPS/sims/uamps.tcl"

   ("uplevel"bodyline1)

   invokedfromwithin

"uplevelsource.orig[list$fileName]"

   (procedure"source"line12)

   invokedfromwithin

"sourcemit/uAMPS/sims/uamps.tcl"

   (file"tcl/mobility/leach.tcl"line18)

   invokedfromwithin

"source.origtcl/mobility/leach.tcl"

   ("uplevel"bodyline1)

   invokedfromwithin

"uplevelsource.orig[list$fileName]"

   (procedure"source"line12)

   invokedfromwithin

"sourcetcl/mobility/$opt(rp).tcl"

   (file"tcl/ex/wireless.tcl"line187)

说环境变量$env(RCA_LIBRARY)找不到,原因是环境变量没有设置好,只是写在bash.bashrc文件中,不过这个文件并没有起作用。

于是手工输入下列代码到命令符下:

exportNS_HOME=`pwd`/ns-allinone-2.31

exportPATH=$NS_HOME/tcl8.4.14/unix:

$NS_HOME/tk8.4.14/unix:

$NS_HOME/bin:

$PATH

exportLD_LIBRARY_PATH=$NS_HOME/tcl8.4.14/unix:

$NS_HOME/tk8.4.14/unix:

$NS_HOME/otcl-1.13:

$NS_HOME/lib:

$LD_LIBRARY_PATH

exportTCL_LIBRARY=$NS_HOME/tcl8.4.14/library

exportRCA_LIBRARY=$NS_HOME/ns-2.31/mit/rca

exportuAMPS_LIBRARY=$NS_HOME/ns-2.31/mit/uAMPS

再次。

/test,命令没有反应,直接又返回了命令提示符。

查看leach.err文件,安装正确。

查看leach.out文件,含有错误信息:

warningdst_isnolongerbeingsupportedinNS.dst_

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2