2011.5.15日更新,重装了Ubuntu后,再安装ns时,又出现各种问题。

为了上这个《NS-2网络模拟基础与应用》蛋痛的课,非要安装ns2.34。本来想在windows7下安装的,不过要先安装Cygwin,这个Cygwin光下载就要了我一个下午的时间,安装用了我一个晚上的时间,还好没有像其他同学一样出现各种安装错误。不过当我安装ns2.34的时候,麻烦出现了,不过我怎么Google和百度,都解决不了我的问题。导致又是一天过去。后来听同学说ns换成2.30或者2.29版本就可以了。不过我没试,因为我烦了,而且Cygwin的体积着实太大(6个多G吧),对于硬盘已经红血的我来说,还是放弃的好。

如果装在Linux下,那就没有问题了。也不用下三个多G的Cygwin安装包。推荐在Linux下安装,当然不想装双系统,可以在虚拟机下搞啊。

废话不说,记录一下我安装ns2.34的正确过程,给装不上的仁兄一个参考。

参考来源:Installing ns-2.34 on Ubuntu 10.10

环境:Ubuntu10.10+ns-allinone-2.34

一、下载ns-allinone-2.34。

原版本下载:点此下载

Laycher修改版下载:点此下载下载这个就可以跳过第三歩了

二、安装X Windows的开发包和g++编译器

在终端输入如下命令:

sudo apt-get install xorg-dev g++ xgraph

输入root密码,安装。

三、修改otcl的configure文件

解压缩下载下来的ns-allinone-2.34.tar.gz,解压出来的文件夹(ns-allinone-2.34)放到/home/laycher/下。(此处laycher为你自己的用户名)。

修改/home/laycher/ns-allinone-2.34/otcl-1.13下的configure文件。找到6304行,或者查找SHLIB_LD="ld -shared",把这段代码中的ld改为gcc,即SHLIB_LD="gcc -shared"

在终端中cd 到ns-allinone-2.34目录下,然后输入 ./install ,进行安装

laycher@ubuntu:~/ns-allinone-2.34$ ./instal

四、设置全局路径变量。

安装成功后,会出现如下图所示的文字,该部分提示你必须设置三个全局变量PATH、LD_LIBRARY_PATH、TCL_LIBRARY。

ns2.34安装成功

laycher@ubuntu:~/ns-allinone-2.34$ cd (回到home目录下)
laycher@ubuntu:~$ vim .bashrc (用vim编辑器编辑文件.bashrc,如果没有vim,可以用gedit或者vi)

在该文件的最后一行下插入如下字段。

export PATH=$PATH:~/ns-allinone-2.34/bin:/home/laycher/ns-allinone-2.34/tcl8.4.18/unix:/home/laycher/ns-allinone-2.34/tk8.4.18/unix
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/laycher/ns-allinone-2.34/otcl-1.13:/home/laycher/ns-allinone-2.34/lib
export TCL_LIBRARY=$TCL_LIBRARY:/home/laycher/ns-alllinone-2.34/tcl8.4.18/library

每一句export为一行,共三行,export和PATH之间有一个空格,后面部分不要用任何字符隔开。每个路径用“:”隔开。“~”相当于/home/laycher。上面的laycher用户名改为自己的。如果安装ns低版本的,请自行修改相应的版本号。

编辑完成后,保存退出。vim是按ESC键后,输入:wq

五、简单测试

重新打开一个终端,刚才设置的环境变量才会生效,如果刚才设置的.bashrc文件中有错误的话,这时新打开的终端会有提示消息显示出来的。那么请自行检查刚刚的设置。

如果没错,进行简单的测试吧。如下图所示。

ns测试

输入ns并回车,出现“%”操作提示符,证明已成功。

再输入一段Tcl脚本代码进行测试。puts "hello world!www.laycher.com"

如果正确,会显示hello world!www.laycher.com

其他:

ns的安装是个技术活,经常会出现各种不同的问题。请善用Google。

如果还是没有成功安装的话,可以先安装这些软件包。

sudo apt-get install build-essential

sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev

sudo apt-get install libxmu-dev libxmu-headers

备注:TNND,为了安装这个东西浪费了我多少时间啊!!!!!

六、出现问题补充

1)安装时出现。

tools/ranvar.cc: In member function ‘virtual double GammaRandomVariable::value()’:
tools/ranvar.cc:219:70: error: cannot call constructor ‘GammaRandomVariable::GammaRandomVariable’ directly
tools/ranvar.cc:219:70: error:   for a function-style cast, remove the redundant ‘::GammaRandomVariable’

/ns-allinone-2.34/ns-2.34/tools 找到219行,删除 ::GammaRandomVariable

2)再次安装又出现

mobile/nakagami.cc: In member function ‘virtual double Nakagami::Pr(PacketStamp*, PacketStamp*, WirelessPhy*)’:
mobile/nakagami.cc:183:73: error: cannot call constructor ‘ErlangRandomVariable::ErlangRandomVariable’ directly
mobile/nakagami.cc:183:73: error:   for a function-style cast, remove the redundant ‘::ErlangRandomVariable’
mobile/nakagami.cc:185:67: error: cannot call constructor ‘GammaRandomVariable::GammaRandomVariable’ directly
mobile/nakagami.cc:185:67: error:   for a function-style cast, remove the redundant ‘::GammaRandomVariable’
make: *** [mobile/nakagami.o] 错误 1
Ns make failed!

/ns-allinone-2.34/ns-2.34/mobile 找到183行,删除 ::ErlangRandomVariable,找到185行,删除 ::GammaRandomVariable

3)安装成功后,设置完PATH,输入ns,出现

程序“ns”尚未安装。  您可以使用以下命令安装:
sudo apt-get install ns2

不要听它的,这是因为设置完PATH后,不能在本终端测试,要重新打开一个终端。

4)重新打开一个终端,输入ns,出现

*** buffer overflow detected ***: ns terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0x563df0]
/lib/i386-linux-gnu/libc.so.6(+0xe4cca)[0x562cca]
/lib/i386-linux-gnu/libc.so.6(__strcpy_chk+0x3f)[0x56205f]
ns(TclTraceVariableObjCmd+0x420)[0x83cf1a0]
.......
b7791000-b7793000 rw-p 00000000 00:00 0
bfe0b000-bfe2c000 rw-p 00000000 00:00 0 [stack]
已放弃

打开新立得软件包管理器(系统->系统管理->新立得软件包管理器),搜索并安装gcc-4.4g++-4.4

再打开tcl8.4.18/unix/Makefile.in,找到第270行:

CC = @CC@

改为

CC = @CC@ -V 4.4

再次重新安装。

成功。

>> 若为原创,转载请注明: 转载自Laycher's Blog

>> 本文链接地址: Ubuntu下安装ns-allinone-2.34记录

>> 订阅本站: http://feed.feedsky.com/laycher