Cygwin
链接:https://cygwin.com/install.html
建议下载32位版本的Cygwin,一开始下载64位版本的,发现后面安装ns的一些依赖库找不到,同时安装ns时也不成功。
选择安装所需文件的下载源,这里选择从网络中下载
选择安装路径,其余默认选择即可
选择下载安装所需文件的存储路径
选择下载源,这里我选择163镜像作为下载源,一开始是没有的,需要自己手动添加
选择ns安装所需要的基本库文件
参考链接:
http://nsnam.sourceforge.net/wiki/index.php/Running_Ns_and_Nam_Under_Windows_9x/2000/XP_Using_Cygwin
1. gcc、gcc-g++、gcc4、gcc4-g++
2. gwak、gnuplot、gzip、make、patch、perl、tar、w32api、diffutils
3. X11View中选择Category,取消左下角的勾选,在search中搜索上述相关库文件,然后点击中间显示列表中的All后面的Deafult,然后Deafult会变成Install
等待……… 安装完成
标注:安装目录为Cygwin安装在win7中的目录
把下载好的ns解压包(我这里为:ns-allinone-2.35.tar.gz)拷贝到安装目录\home\目录下
打开Cygwin,使用“cd /home”命令跳转到/home路径下,使用“ls”命令,可以看到当前目录下存在ns-allinone-2.35.tar.gz
使用“tar -zxvf ns-allinone-2.35.tar.gz”命令,解压ns-allinone-2.35.tar.gz,之后当前路径下会产生一个名为ns-allinone-2.35的文件夹,跳转到该文件夹中
使用notepad++或者ultraledit,打开安装目录\home\ns-allinone-2.35\ns-2.35\linkstate\ls.h。然后定位到第137行
源代码为
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
修改为
void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
在安装目录\home\ns-allinone-2.35\ns-2.35\下,新建文件夹measure,然后下载mudp.h、mudp.cc、mtcpsink.h、mtcpsink.cc、mudpsink.h、mudpsink.h,存放到该文件夹中
添加mUDP、mUdpSink和mTcpSink模块
6.1 打开安装目录\home\ns-allinone-2.35\ns-2.35\common\packet.h,定位带第599行
在struct hdr_cmn中增加
int frametype_;
double sendtime_;
unsigned int pkt_id_;
unsigned int frame_pkt_id_;
6.2 打开安装目录\home\ns-allinone-2.35\ns-2.35\Makefile和安装目录\home\ns-allinone-2.35\ns-2.35\Makefile.in,在xcp/xcpq.o xcp/xcp.o xcp/xcp-end-sys.o \这行之后,添加
measure/mtcpsink.o measure/mudp.o measure/mudpsink.o \
6.3 打开安装目录\home\ns-allinone-2.35\ns-2.35\tcl\lib\ns-default.tcl,在Delayer set debug_ false这行之后,添加
Agent/mUDP set packetSize_ 1000
6.4 打开安装目录\home\ns-allinone-2.35\ns-2.35\measure\mudp.cc,定位到第17、18、19行,删除掉如下一行
UdpAgent::UdpAgent();
6.5 打开Cygwin,跳转到/home/ns-allinone-2.35/ns-2.35,执行./configure命令,之后输入make clean命令,最后输入make命令,等待编译完成
6.6 如果在上述6.5节的编译过程中,在编译tcl阶段出现如下出错提示,请输入./configure –with-tcl-ver=8.5命令,之后输入make clean命令,最后输入make命令,等待编译完成
checking for tclsh… no
checking for tclsh… no
checking for tclsh… no
checking for tclsh8.4… no
configure: error: Installation of tcl seems incomplete or can’t be found automatically.
Please correct the problem by telling configure where tcl is
using the argument –with-tcl=/path/to/package
(perhaps after installing it),
or the package is not required, disable it with –with-tcl=no.
打开Cygwin,跳转到/home/ns-allinone-2.35,输入./install命令,等待安装过程完成,期间可能输出各种信息,可以忽略
打开安装目录\home\用户名\.bashrc,在文件末尾增加
PATH=”$PATH:/home/ns-allinone-2.35/bin:/home/ns-allinone-2.35/tcl8.5.10/unix:/home/ns-allinone-2.35/tk8.5.10/unix”
LD_LIBRARY_PATH=”/home/ns-allinone-2.35/otcl-1.14:/home/ns-allinone-2.35/lib”
TCL_LIBRARY=”/home/ns-allinone-2.35/tcl8.5.10/library”
打开Cygwin,如果已经打开,则重启Cygwin,输入ns命令,如下图所示,则环境变量配置成功
打开Xwin Server(可以通过在菜单->程序列表中寻找)
从Xwin Server中的系统工具中打开Cygwin,然后如下图进行操作,成功出现下图的现象,证明ns和nam命令可用