说明:$HOME指当前用户所在目录。
1、在 $HOME/ns-allinone-2.30/ns-2.30下新建gpsr文件夹,并将GPSR-KeLiu中的
gpsr_packet.h, gpsr_neighbor.h, gpsr_neighbor.cc, gpsr.h, gpsr.cc, gpsr.tcl,
wireless-gpsr.tcl, gpsr_sinklist.h, gpsr-sinklist.cc, grid_deploy10x10.tcl, cbr100.tcl加入刚新建的gpsr文件夹中。
2、进入$HOME/ns-allinone-2.30/ns-2.30/common, 修改packet.h
在enum packet_t{
增加 PT_GPSR
}
class p_info {
增加 name_[PT_GPSR]= “gpsr”
}
3、进入$HOME/ns-allinone-2.30/ns-2.30/trace,修改 cmu-trace.cc
(readme遗漏)增加 #include <gpsr/gpsr_packet.h>
在 void CMUTrace::format(Packet* p, const char *why)
{
增加 case PT_GPSR;
break;
}
3、进入 $HOME/ns-allinone-2.30/ns-2.30/queue,修改priqueue.cc
void PriQueue::recv(Packet *p, Handler *h)
{
增加 case PT_GPSR:
}
4、进入$HOME/ns-allinone-2.30/ns-2.30/tcl/lib, 修改ns-packet.tcl
foreach prot{
增加GPSR
}
5、进入 $HOME/ns-allinone-2.30/ns-2.30/ ,修改Makefile
在OBJ_STL = 的最后按照格式加入( gpsr前为TAB键而不是空格)
gpsr/gpsr_neighbor.o\
gpsr/gpsr_sinklist.o\
gpsr/gpsr.o
如果需要加入调试信息,则在CCOPT = -Wall 加上 -g, 如下:
CCOPT = -g -Wall
6、重新编译,执行如下命令
cd $HOME/ns-allinone-2.30/ns-2.30/common
touch packet.cc
cd ..
make clean
make
7、在使用脚本wireless_gpsr.tcl进行场景仿真时,需要对 ns-2.30所在的路径进行修改
将wireless_gpsr.tcl 中的将ns2home 修改成 $HOME/ns-allinone-2.30/ns-2.30/
如:
source /home/qq/ns-allinone-2.34/ns-2.34/gpsr/gpsr.tcl