NS2是一个功能强大的网络模拟工具,下面介绍一下我在Ubuntu 7.10系统下安装NS2所遇到的艰难险阻,给后来者以借鉴。
问题一:刚开始安装时显示gcc can’t create executables之类的提示
解决方案:
这是由于我用的是ubuntu免费邮寄的安装盘,安装后的系统中gcc是不能用来的开发的,只有一个空壳,所以需要重新安装gcc。先用命令: sudo apt-get remove gcc
然后sudo apt -get install build-essential 便成功解决问题。
问题二:再次安装NS2时发现安装至tk8.4.13时出现错误,安装中断退出。在安装日志上发现一句:x11/xlib.h nosuch file or directory 在网上查阅了资料,原来是x11M没有装。
解决方案:
先安装X11,命令为 sudo apt -get install libx11-dev
结果仍然出错如下:
checking for main in -lXbsd… no
checking for socket in -lsocket… no
checking for gethostbyname in -lnsl… yes
checking for dcgettext in -lintl… no
checking for getnodebyname in -ldnet_stub… no
checking that g++ can handle -O2… no
checking standard STL is available… no
checking for tcl.h… -I../include
checking for tclInt.h… -I../include
checking for libtcl8.4… -L../lib -ltcl8.4
checking for init.tcl… ../lib/tcl8.4
checking for http.tcl… ../lib/tcl8.4/http1.0
checking Tcl http.tcl library… yes
checking for tclsh8.4.11… no
checking for tclsh8.4… ../bin/tclsh8.4
checking for tk.h… -I../include
checking for libtk8.4… -L../lib -ltk8.4
checking for tk.tcl… ../lib/tk8.4
checking for X11 header files
can’t find X includes
otcl-1.12 configuration failed! Exiting …
Please check http://www.isi.edu/nsnam/ns/ns-problems.html
for common problems and bug fixes.
还是没有得到解决.分析了一下可能是x11没有安装完整,于是先输入:sudo apt-cache search x11-dev
得到以下信息:
libx11-dev – X11 client-side library (development headers)
xlibs-dev – X Window System client library development files transitional package
libghc6-x11-dev – Haskell X11 binding for GHC
libooc-x11-dev – X11 specific modules for the oo2c compiler (devel)
libgl1-mesa-swx11-dev – A free implementation of the OpenGL API — development support files
分别安装上面的组件,命令如下:
sudo apt-get install libx11-dev
sudo apt-get install xlibs-dev
sudo apt-get install libghc6-x11-dev
sudo apt-get install libooc-x11-dev
然后继续安装,等了半天,安装完成!
问题三:安装好NS2后,还有设置环境变量。
命令为: sudo gedit ~/.bashrc
在打开的.bashrc文件结尾加上三句:
export PATH=”/home/ns2/ns-allinone-2.30/bin:/home/ns2/ns-allinone-2.30/nam-1.12:/home/ns2/ns-allinone-2.30/tcl8.4.13/unix:/home/ns2/ns-allinone-2.30/tk8.4.13/unix”
export LD_LIBRARY_PATH=” /home/ns2/ns-allinone-2.30/otcl-1.12, /home/ns2/ns-allinone-2.30/lib”
export TCL_LIBRARY=” /home/ns2/ns-allinone-2.30/tcl8.4.13/library”
注意:/home/ns2/ns-allinone-2.30/为安装文件所在目录,三个环境变量的值在NS2安装完成时在提示信息中会给出。
另外补充一点:我在设置了上述环境变量后,发现ls命令不能使用了,我分析得出:可能是设置环境变量时将系统原来的PATH值替换掉了。于是我将上面三句删掉,重新打开一个
终端,输入命令 sudo echo $PATH 得到原始值为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
将上面的值粘贴到上面的第一句末尾,注意用分号分开各个路径,如下:
export PATH=”/home/ns2/ns-allinone-2.30/bin:/home/ns2/ns-allinone-2.30/nam-1.12:/home/ns2/ns-allinone-2.30/tcl8.4.13/unix:/home/ns2/ns-allinone-2.30/tk8.4.13/unix:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”
然后再将修该后的三个语句放到.bashrc中即可。设置好后,打开终端输入ns回车就会出现%,表明设置成功。
问题四:安装成功后运行样例程序发现ns模拟没有问题就是不能自动调用nam!
显示错误为:
ns: finish: couldn’t execute “nam”: no such file or directory
while executing
“exec nam out.nam &”
(procedure “finish” line 7)
invoked from within
“finish”
解决方案:
先手动编译nam生成可执行文件nam
进入NS_HOME/nam-1.12(NS_HOME为安装ns2的路径)输入命令:make
结果显示错误:
xwd.c:87:29: 错误: X11/Xmu/WinUtil.h:No such file or directory
make: *** [xwd.o] 错误 1
问题是xmu没有安装,于是只好再装xmu,
命令为:
sudo apt-get install libxmu-dev
然后在输入make进行编译,完成后在NS_HOME/nam-1.12/中可以发现可执行文件nam将其复制到 NS_HOME/bin/目录下,这样由于$PATH环境变量中有NS_HOME/bin项,nam就可以直接运行了。
至此,终于大功告成了。