Linux下的NS229安装及错误调试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux下的NS2安装+LEACH及错误修改
一、安装前的预备
说明为了方便实验和利用,采纳的实在虚拟机上安装,安装和配置进程与实体无异。
环境:
+预备:
在安装编译之前确保Linux中已经安装了gcc++编译工具,和XFree86-devel and XFree86-libs两个组件。
别离为:X 软件开发KDE桌面环境,能够在添加删除程序中进行安装。
二、安装进程
1. 本实验安装环境:完全安装的RedHat 操作系统,安装包。
2. 到官方下载网址下载NS2安装软件包以root登录RH9,在/home下成立ns2文件夹,将放在该文件夹下,在终端运行cd /home/ns2,利用解压命令tar xvfz ,即生成/home/ns2/ .
4. 修改/home/ns2/ 中的第73行,将NULL改成0.
5. 在/home/ns2/ 下运行。
/install
6. 依照安装终止后结尾处的提示,将某些途径复制下来,或直接依照以下修改(能够对照提示明白得):
7. 修改/root/.bashrc(注意该文件为隐藏文件),在该文件末尾加上以下三句话:
export
PATH=$PATH:/home/ns2/bin:/home/ns2/ /:/home/ns2/:/home/ns2/:/home/ns2/lib export
TCL_LIBRARY=$TCL_LIBRARY:/home/ns2/在root途径下输入命令:source .bash_profile进行环境变量的更新
8.这时,假设是以上设置正确,直接运行ns会显现%,或能够运行软件自带的例子,在/home/ns2/ns-tutorial/examples下运行ns
LEACH协议的安装
预备:获取LEACH的源码文件:
1.进入到目录/home/ns2/下解压LEACH协议源文件
[root@localhost root]# cd /home/ns2/
[root@localhost ]# tar -xzcf ./
2.修改MakeFile文件
1)添加-DMIT_uAMPS到DEFINE中
DEFINE = -DTCP_DELAY_BIND_ALL.......-DMIT_uAMPS
2)添加-I./mit/rca -I./mit/uAMPS到INCLUDE中
INCLUDES = \
-I./diffusion3/filter_core -I./asim/ -I./qs \
-I./diffserv -I./satellite \
-I./wpan \
-I./mit/rca -I./mit/uAMPS \
3)添加以下代码在gaf/ \之前
mit/rca/ mit/rca/ \
mit/rca/ mit/rca/ \
mac/ mac/ mit/uAMPS/ \
注:添加进程中利用TAB键代替空格。
不然编译会犯错。
4)将MakeFile文件中的mit/ mit/mit注销掉(有的话)。
3.进入目录下,输入make clean
[root@localhost ]# make clean
注:假设显现Makefile:1: *** missing separator. Stop.错误,查看MakeFile文件添加修改的代码是不是利用空格代替了TAB,是的话悔改来。
4.编译make
5.修改test文件如下:
6.修改leach_test文件,ns tcl/ex/ \ 前添加以下代码
7.修改.bashrc文件([root@localhost root]# vim .bashrc ),在文件最后添加以下环境变量。
8.mit\ MPS\sims\ 文件。
9.验证结果
10查看
错误锦集及修改
一.编译犯错
的问题
在/home/ns2/common/ 文件中,
enum packet_t下添加PT_XCP,
接着在p_info()里添加name_[PT_XCP]="xcp";
/home/ns2/mac /中:
WirelessPhy *wifp = (WirelessPhy *)tifp;以后加入:
mac下面的文件中
WirelessPhy()下添加
然后在的最后添加
:DROP_MAC_COLLISION
在文件中#define DROP_MAC_COLLISION "COL"以后加入
端小端的问题
注释掉#ifndef和#endif。
: In member function `void MobileNode::update_position()': common/:477: warning: unused variable `double oldY'
注释掉:
: In member function `virtual void
WirelessPhy::sendDown(Packet*)':
mac/:320: `min' undeclared (first use this function)
把min改成MIN
说明:具体的错误修改能够参考其他版本(如:的对应文件进行修改。
二.测试犯错
解决方式:
\\tcl\lib\文件第692行加入7个初始值如下:
具体的初始值应该对照
\\mac\输入(第95行,第97-99行,第104-105行,第107行)
注意:提示code omitted because of length 错误, 错误在set Efriss_amp_ 100*1e-12;
缘故是:不能设置表达式,要改成set Efriss_amp_ *1e-10, 同理改_amp_ *1e-12; set EXcvr_ 50*1e-9 )。
修改以后,要从头编译。
即先执行make clean,再执行make。
成功后,再次运行./test,取得第一次的结果。
解决:
显现那个问题的缘故能够在两个文件当中找到。
第一个文件mit/uAMPS/当中
Application/LEACH instproc send_now {mac_dst link_dst type msg \
data_size dist code} {
[$self agent] set packetMsg_ $type
[$self agent] set dst_ $mac_dst ;#正是这句产生了大量的警告信息[$self agent] sendmsg $data_size $msg $mac_dst $link_dst $dist $code
}
解决方法:
将上面一句改成如下两句就OK了。
[$self agent] set dst_addr_ $mac_dst
[$self agent] set dst_port_ 0
尽管如此能够减少警告信息,但本人不明白dst_port_设为0是不是正确了,或许当是0xffff的吧,正在分析原代码ing...
第二个文件mit/uAMPS/ 当中
Application/BSApp instproc send {mac_dst link_dst type msg
data_size dist code} {
[$self agent] set packetMsg_ $type
[$self agent] set dst_ $mac_dst ;#产生了大量的警告信息的语句
[$self agent] sendmsg $data_size $msg $mac_dst $link_dst $dist $code
}
一样将上面语句改成下面两句
[$self agent] set dst_addr_ $mac_dst
[$self agent] set dst_port_ 0。