环境平台:ubuntu16.04+NS-2+leach源码+beyond compare
先安装beyond compare软件,后面用得到,安装步骤:
wget http://www.scootersoftware.com/bcompare-4.2.10.23938_amd64.deb
sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi bcompare-4.2.10.23938_amd64.deb
安装成功后,在应用管理中搜索beyond打开即可
一般在这里出的问题比较多,在这里用到了我们之前安装的beyond compare软件,需要对两个文件夹下的文件做比较。
这是beyond软件打开后的效果,可以很清楚地看到两个文件中的代码差异,我们需要将leach源码里以#ifdef开头,#endif结尾的部分加到ns对应的文件中。中间的小箭头可以省粘贴复制的力气,但是谨慎使用,因为有时候可能没注意到复制过去多几行,少几行,容易造成后期make不成功,重新排错很痛苦。
5.添加环境变量
vim ~/.bashrc
在文件最下面加入
$NS_HOME=/home/joy/ns-allinone-2.35
export RCA_LIBRARY=$NS_HOME/ns-2.35/mit/rca
export uAMPS_LIBRARY=$NS_HOME/ns-2.35/mit/uAMPS
#此处$NS_HOME=/home/joy/ns-allinone-2.35,大家根据自己的更改
6.修改ns-2.35文件夹下的Makefile文件
vim Makefile
具体修改内容为:
point1:在第62行DEFINE最后添加-DMIT_uAMPS
DEFINE = -DTCP_DELAY_BIND_ALL -DNO_TK -DTCLCL_CLASSINSTVAR -DNDEBUG -DLINUX_TCP_HEADER -DUSE_SHM -DHAVE_LIBTCLCL -DHAVE_TCLCL_H -DHAVE_LIBOTCL1_14 -DHAVE_OTCL_H -DHAVE_LIBTK8_5 -DHAVE_TK_H -DHAVE_LIBTCL8_5 -DHAVE_TCLINT_H -DHAVE_TCL_H -DHAVE_CONFIG_H -DNS_DIFFUSION -DSMAC_NO_SYNC -DCPP_NAMESPACE=std -DUSE_SINGLE_ADDRESS_SPACE -Drng_test -DMIT_uAMPS
point2:在第64行INCLUDES最后添加-I./mit/rca -I./mit/uAMPS
具体内容为:
-I./wpan \
-I./mit/rca -I./mit/uAMPS \
point3:在第233行gaf/gaf.o /这一行之前添加下列语句
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 /
×××makefile文件中tab和空格不通用,因此point1、point2和point3处修改一定注意,不要使用空格,都使用tab键对齐。修改完后可以通过观察每行最后的\和/符号是否和其他代码颜色一样,不一样则说明有空格!!!!
7.在ns-2.35文件目录下输入命令,清除编译缓存
make clean
然后输入命令重新编译
make
不报错,出现这个就是安装成功了。
×××make时很容易因为第三步文件更改发生错误而失败,这时候根据出错的提示信息,重新检查两个文件或者引用的更改的文件有没有多复制、少复制,然后进行相应的更改就好了。
8.修改test
#!/bin/bash
cd tcl/ex
ns wireless-demo-csci694.tcl
sleep 2
cd ../../
./leach_test
9.在ns-2.35文件夹下运行 ./test
大家看到我的警告是比较多的,但是协议是可以正常运行的,可以参考如何去除警告消除警告,亲测有效。
注意:这样修改之后,要重新编译。即先执行make clean,再执行make。make成功后,再次运行./test,得到第一次的结果。
最终就得到正解啦。
10.但是如果我们要检查是否有错误还是要根据/mit/leach_sims文件夹下的leach.err文件判断
如这样就是成功啦
至此,leach源码安装成功!!!