Win7(x64) + Cygwin + ns2.35 安装配置教程

安装配置教程



软件下载

  1. Cygwin
    链接:https://cygwin.com/install.html
    建议下载32位版本的Cygwin,一开始下载64位版本的,发现后面安装ns的一些依赖库找不到,同时安装ns时也不成功。

  2. ns
    链接:https://www.isi.edu/nsnam/ns/ns-build.html


安装Cygwin

安装起始

选择安装所需文件的下载源,这里选择从网络中下载
选择源

选择安装路径,其余默认选择即可
选择安装路径

选择下载安装所需文件的存储路径
选择下载安装所需文件的存储路径

选择网络连接

选择下载源,这里我选择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. X11

View中选择Category取消左下角的勾选,在search中搜索上述相关库文件,然后点击中间显示列表中的All后面的Deafult,然后Deafult会变成Install

选择安装所需文件

等待……… 安装完成


安装ns

标注:安装目录为Cygwin安装在win7中的目录

  1. 把下载好的ns解压包(我这里为:ns-allinone-2.35.tar.gz)拷贝到安装目录\home\目录下

  2. 打开Cygwin,使用“cd /home”命令跳转到/home路径下,使用“ls”命令,可以看到当前目录下存在ns-allinone-2.35.tar.gz

  3. 使用“tar -zxvf ns-allinone-2.35.tar.gz”命令,解压ns-allinone-2.35.tar.gz,之后当前路径下会产生一个名为ns-allinone-2.35的文件夹,跳转到该文件夹中

  4. 使用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()); }

  5. 安装目录\home\ns-allinone-2.35\ns-2.35\下,新建文件夹measure,然后下载mudp.hmudp.ccmtcpsink.hmtcpsink.ccmudpsink.hmudpsink.h,存放到该文件夹中

  6. 添加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.

  7. 打开Cygwin,跳转到/home/ns-allinone-2.35,输入./install命令,等待安装过程完成,期间可能输出各种信息,可以忽略


设置环境变量

  1. 打开安装目录\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”

  2. 打开Cygwin,如果已经打开,则重启Cygwin,输入ns命令,如下图所示,则环境变量配置成功
    测试环境变量是否成功


运行测试例子

  1. 打开Xwin Server(可以通过在菜单->程序列表中寻找)

  2. Xwin Server中的系统工具中打开Cygwin,然后如下图进行操作,成功出现下图的现象,证明nsnam命令可用
    测试


参考

  1. https://stackoverflow.com/questions/17277446/ns2-installation-error-on-ubuntu-12-10
  2. http://blog.csdn.net/wuhenyouyuyouyu/article/details/50829753
  3. http://www.cnblogs.com/helloWaston/p/4549735.html