先牢骚几句:NS2的安装真的是太麻烦了,而且网上找到安装教程都是一个模样,安装起来出现各种问题。最近花了两天多的时间,颇费周折,最终终于将Cygwin和NS2安装成功了,如释重负,倍感欣慰,在此特将小弟的安装过程和心得共享出来,希望能为正在苦苦安装NS2的朋友们提供些许帮助。Cygwin采用在线安装,NS2选择的是NS2.28。
1、首先肯定是安装Cygwin了
这个直接在Cygwin的官网上下载,关于Cygwin的安装网上教程很多,这里只简单介绍一下。其中最重要的是在选择安装包的时候一定记住将左下角的 hid obsolete package的勾选标记去掉,这样才能找到所需要的所有包。包的选择一定要把以下包都选上:
gcc
gcc-g++
gnuplot
make
patch
perl
tar
X-startup-scripts
xorg-x11-base
xorg-x11-bin
xorg-x11-devel
xorg-x11-bin-dlls
xorg-x11-bin-lndir
xorg-x11-etc
xorg-x11-fenc
xorg-x11-fnts
xorg-x11-libs-data
xorg-x11-xwin
libxt-devel
libXmu-devel
红色标记的两个包切记不能忘了选上。然后就慢慢等待Cygwin的安装。安装完成后生成快捷方式。
2、NS2的安装
下载NS2,第一次启动Cygwin会在安装的目录下生成一个以你的计算机用户名名称命名的文件夹例如我Cygwin安装在D盘计算机用户名为yyx,会产生一个D:\cygwin\home\yyx的文件,如果你的用户名是Administrator则是D:\cygwin\home\Administrator。
将NS2压缩包拷贝到D:\cygwin\home\yyx文件目录下,运行Cygwin,进入该目录(打开后默认应该就是在该目录下),输入tar xvfz ns-allinone-2.28.tar.gz,解压NS2压缩包。解压完成后一定注意有两个文件要先改了再安装,切记!切记!:
(1) D:\cygwin\yyx\ns-allinone-2.28\nam-1.11\agent.h文件的第73行的NULL改为0,不然不能生成nam.exe。其实这个也可以在安装完成之后再改,但更麻烦些,方法后面有介绍。
(2) D:\cygwin\yyx\ns-allinone-2.28\tk8.4.5\generic\tkBind.c文件中的588行后加入:
#ifdef GenericEvent
/*GenericEvent*/ 0,
#endif
我最开始就没改第二步,结果最后在执行ns example2.tcl的时候出现$ nam: [code omitted because of length]错误,如下图1:
结果网上一搜发现说是由于nam调用的tk组件和xproto-7.0.13不兼容导致的(xproto-7.0.13 新添加了GenericEvent)反正我不懂,没办法也只能改过之后再重装了一遍。所以这里一定要记住先改再安装。
改好之后,在Cygwin里cd ns-allinone-2.28,然后再输入 ./install进行安装。然后就是慢慢等待安装的结束。
安装结束之后就是设置PATH。这一点网上也有很多人说了,但最重要的是不要在网上直接复制粘贴进 .bashrc文件,因为直接复制有可能是因为操作系统字体的原因也有可能是复制的内容里多了某些空格或者换行符等东西而导致出错,所以还是老老实实的下载个ultraedit编辑器,在该编辑器里将以下几行内容一个字一个字的敲进 .bashrvc文件比较稳妥,这儿的yyx是我的文件名称,记得改为你自己的文件名称。我最开始就是复制粘贴,花了一天多的时间老是在装好之后不管是输入startxwin.bat还是直接输入ns都显示找不到command。当我后来重装的时候自己一个字一个字的敲进去之后,再输入ns就会出现%符号了,当时就狂喜啊(不过当时输入startxwin.bat还是显示找不到该command,具体原因后面有介绍)。
export NS_HOME=/home/yyx/ns-allinone-2.28
export PATH=$NS_HOME/bin:$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$PATH
export LD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/otcl-1.9:$NS_HOME/lib:LD_LIBRARY_PATH
export TCL_LIBRARY=$NS_HOME/tcl8.4.5/library
改好 .bashrc文件之后,正如我前面所说当我输入ns按回车之后出现%符号了,但我按那些安装教程上说的输入startxwin.bat之后还是出现找不到command,当时就急了,网上找了很多方法,最后在一个地方看有人说试一下输入srartxin.exe,也有的人说试一下输入startxwin不加后面的.bat,当我试了下只输入startxwin之后梦寐以求的那个x窗口终于弹出来了(又一阵狂喜啊!当时就郁闷为啥所有的教程里都没提这一点呢,害得我以为环境变量又设置错了,到处找原因,虽然最后搞定了但我还是没明白为什么要这样做)如下图2。
如果大家都按我上面说的一步一步改好了,那在新弹出来的窗口中输入
cd ns-allinone-2.28/ns-2.28/ns-tutorial/examples
ns example2.tcl
之后就应该能看到结果了(下图3),那表明安装已经成功了。
所以整个NS2的安装步骤可以简化为:解压→改两个文件→安装→改环境变量→成功!
我之前就是因为没有在安装前改第一个地方的文件,结果在输入ns example2.tcl 之后就出现了找不到nsm.exe的情况,在网上找了一下,说是在home/yyx/ns-allinone-2.28/nam-1.11下看是不是有nsm.exe,发现果真没有,于是需要用make命令生成nam.exe。步骤:首先进入目录home/yyx/ns-allinone-2.28/nam-1.11,然后运行命令( ./configure && make && makeinstall )后会在 home/yyx/ns-allinone-2.28/nam-1.11目录下生成一个nam.exe文件,但我发现我执行该命令之后还是没产生nam.exe文件,而出现了以下错误图4:
仔细一看这个错误说明,正是和我前面所说的没有把D:\cygwin\yyx\ns-allinone-2.28\nam-1.11\agent.h文件的第73行的NULL改为0,于是回到该目录下,找到该文件,改完之后再按前面的步骤执行就产生了nam.exe文件了(这时虽然也显示有错误产生,但这个错误对最终结果没有影响)把nam.exe文件拷贝到 home/sun/ns-allinone-2.28/bin 目录下。这次就有了nam了。其实只要最初就改好文件就不会出现这种问题了,安装的时候就直接自动产生nam.exe文件了。
解决这个问题之后如果安装之前也把我前面说的第二个文件改过了,那就能运行成功了,如果没有改那就会出现了这样的错误图5:
这种情况下又只能改过文件之后再重新装了一下NS2了。所以大家一定要按我先前说的步骤去做,不能保证每个人都成功,但至少我成功了,哈哈!