Ubuntu下安装ns步骤
ns版本为:ns-allinone-2.33.tar.gz
1, 从官网上下载ns-allinone-2.33.tar.gz版本http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.33/ns-allinone-2.33.tar.gz/download?use_mirror=nchc
2, 在home文件夹下建立ns2文件夹
3, 将下载的打包文件,拷贝到/home/ns2文件夹下,并且解压该文件
4, 进入ns-allinone-2.33文件夹,执行./install,若有错误:
4.1 进入otcl-1.13目录,找到configure.in, 将77行,SHLIB_LD="ld -shared" 改为SHLIB_LD="gcc -shared".同时修改configure 第5518行SHLIB_LD="ld -shared"改为SHLIB_LD="gcc –shared"
否则./install时会出现如下提示:
ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] 错误 1
otcl-1.13 make failed! Exiting ...
4.2 执行./install时若遇到如下错误:
遇到的错误
(1) 错误一:安装NS2.33过程中出现如下的错误:
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’
make: *** [tools/ranvar.o]错误1
Ns make failed!
See http://www.isi.edu/nsnam/ns/ns-problems.html for problems
在ns-allinone-2.33/ ns-2.33/tools文件夹下,找到报错提示中的ranvar.cc文件,打开找到对应的219行删除::GaammaRandomVariable,保存,即:将219行的return GammaRandomVariable::GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);改为:return GammaRandomVariable(1.0 + alpha_, beta_).value() * pow (u, 1.0 / alpha_);
(2) 错误二:重新在ns目录下键入$ ./install安装,再次出现同类问题时,如:
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!
See http://www.isi.edu/nsnam/ns/ns-problems.html for problems
解决方法:
在ns-allinone-2.33/ ns-2.33/ mobile文件夹下,找到报错提示中的nakagami.cc文件,打开找到对应的183行删除::ErlangRandomVariable,保存,即:将183行的resultPower = ErlangRandomVariable::ErlangRandomVariable(Pr/m, int_m).value();
改为:resultPower = ErlangRandomVariable(Pr/m, int_m).value();
在ns-allinone-2.33/ ns-2.33/ mobile文件夹下,找到报错提示中的nakagami.cc文件,打开找到对应的185行删除::GammaRandomVariable,保存,即:将185行的
resultPower = GammaRandomVariable::GammaRandomVariable(m, Pr/m).value();
改为:resultPower = GammaRandomVariable(m, Pr/m).value();
重新在ns目录下键入$ ./install安装,再次出现同类问题时,仿照此次解决方法,找到对应的文件和行数,修改即可。直到安装成功。
更新环境变量:(注意红色的为我安装的目录)export PATH=$PATH:/home/ns2/ns-allinone-2.33/bin:/home/ns2/ns-allinone-2.33/tcl8.4.18/unix:/home/ns2/ns-allinone-2.33/tk8.4.18/unix
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ns2/ns-allinone-2.33/otcl-1.13:/home/ns2/ns-allinone-2.33/lib
export TCL_LIBRARY=$TCL_LIBRARY:/home/ns2/ns-allinone-2.33/tcl8.4.18/library
然后执行source /etc/bash.bashrc
5.安装成功后会出现以下信息:
IMPORTANT NOTICES:
(1) You MUST put /home/ruan/ns-allinone-2.33/otcl-1.13, /home/ruan/ns-allinone-2.33/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 <paths>
If you are using sh, you can set it like:
export LD_LIBRARY_PATH=<paths>
(2) You MUST put /home/ruan/ns-allinone-2.33/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.33; ./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.
6. 安装成功。执行ns,出现%提示符,执行nam,富有个性的图形界面就出来了
7.更新软件包:ubuntu 11.04的gcc版本为4.5,而ns2.33只能在gcc 4.4及以下版本安装。依次执行
a.sudo apt-get intall gcc-4.4
b.sudo apt-get intall g++-4.4
c.修改tcl8.4.18/unix文件夹下的文件Makefile.in的270行CC = @CC@修改为:
CC = @CC@ -V 4.4
否则执行ns时会出现如下提示:
*** buffer overflow detected ***: ns terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0x451df0]
/lib/i386-linux-gnu/libc.so.6(+0xe4cca)[0x450cca]
/lib/i386-linux-gnu/libc.so.6(__strcpy_chk+0x3f)[0x45005f]
ns(TclTraceVariableObjCmd+0x420)[0x83adb00]
ns(Tcl_TraceObjCmd+0x469)[0x83b2989]
ns(TclEvalObjvInternal+0x37b)[0x839f2bb]
ns(Tcl_EvalEx+0x419)[0x83a11a9]
ns(Tcl_Eval+0x3c)[0x83a14cc]…………………………
…………………………………………………………………………………