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。
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并回车,出现“%”操作提示符,证明已成功。
再输入一段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.4 和 g++-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
你好,我也用的是ubuntu10.10,并在上面安装了ns2-2.34,但是完成后,我修改了一下里面的.cc文件(在我的tcl文件中调用的程序中创建了一个文件并把数据写进去)并编译,而后用tcl文件进行模拟,但是我所要求的结果(我所建立的文件以及里面的数据)并没有产生,请问你知道是什么原因吗?谢谢
最后祝你五一快乐。
请确认是否完全安装了。并出现博文中图片的样式。如果有的话,那可能是你编写的程序出了问题。
那出现这种情况的话,怎么样才能该过来啊!?你知道不?
Ns-allinone package has been installed successfully.
Here are the installation places:
tcl8.4.18: /home/tang/ns-allinone-2.34/{bin,include,lib}
tk8.4.18: /home/tang/ns-allinone-2.34/{bin,include,lib}
otcl: /home/tang/ns-allinone-2.34/otcl-1.13
tclcl: /home/tang/ns-allinone-2.34/tclcl-1.19
ns: /home/tang/ns-allinone-2.34/ns-2.34/ns
nam: /home/tang/ns-allinone-2.34/nam-1.14/nam
gt-itm: /home/tang/ns-allinone-2.34/itm, edriver, sgb2alt, sgb2ns, sgb2comns, sgb2hierns
———————————————————————————-
Please put /home/tang/ns-allinone-2.34/bin:/home/tang/ns-allinone-2.34/tcl8.4.18/unix:/home/tang/ns-allinone-2.34/tk8.4.18/unix
into your PATH environment; so that you’ll be able to run itm/tclsh/wish/xgraph.
IMPORTANT NOTICES:
(1) You MUST put /home/tang/ns-allinone-2.34/otcl-1.13, /home/tang/ns-allinone-2.34/lib,
into your LD_LIBRARY_PATH environment variable.
If it complains about X libraries, add path to your X libraries
into LD_LIBRARY_PATH.
If you are using csh, you can set it like:
setenv LD_LIBRARY_PATH
If you are using sh, you can set it like:
export LD_LIBRARY_PATH=
(2) You MUST put /home/tang/ns-allinone-2.34/tcl8.4.18/library into your TCL_LIBRARY environmental
variable. Otherwise ns/nam will complain during startup.
After these steps, you can now run the ns validation suite with
cd ns-2.34; ./validate
For trouble shooting, please first read ns problems page
http://www.isi.edu/nsnam/ns/ns-problems.html. Also search the ns mailing list archive
for related posts.
上面是我安装完后出现的信息,感觉这应该没有时吧,以前我用的是10.04的,在那上面安装很好安装,后来由于系统引导区坏了,我想直接安装10.10的,现在看来10.10并不是很好用啊。
安装是成功了,PATH如果也设置好了的话,我只能觉得是代码编写的问题了。我也是刚开始学的,你问问你们老师吧。