文章来源:http://bbs.sciencenet.cn/home.php?mod=space&uid=282398&do=blog&id=468286
这真是一个痛苦并快乐到过程,尝试多次安装,最终迎来来伟大的复兴!终于安装成功了!!!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.首先,修改更新源,原有的更新源无法完成更新。
以下是ubuntu 11.04 教育网的源:
sudo gedit /etc/apt/sources.list
#网易资源
deb http://mirrors.163.com/ubuntu/ natty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ natty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ natty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ natty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ natty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ natty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ natty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ natty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ natty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ natty-backports main restricted universe multiverse
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
Attention!
如果gcc的版本大于4.0则在./install之前要做一些修改("gcc4.0版本以前是用ld-share来生成共享库的,但是到了4.0以上的版本(我的为gccversion 4.4.1),这个命令改为了gcc-share即可")
补充:怎样查看gcc版本?
终端执行ls/usr/bin/gcc –l或者gcc–version或者gcc -v
查看过gcc版本之后,如果确实是4.0以上的版本,需要做以下修改:
cdns-allinone-2.34/otcl-1.13
sudogedit configure.in
把77行处的
SHLIB_LD="ld-shared"
改为
SHLIB_LD="gcc-shared"
保存退出,然后
sudogedit configure
把6304行(Ctrl+F)的
SHLIB_LD="ld-shared"
改为
SHLIB_LD="gcc-shared"
保存退出,然后
cdns-allinone-2.34 #到安装目录
sudo./install #开始安装
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
下面高潮就来啦!所有问题尼玛就全来啦!
下面来的是各种各样的错误!
1.错误一:安装NS2.34过程中出现如下的错误:
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
这是由于gcc版本提高后对类内部函数调用的简化造成的不兼容,解决方法如下:
在ns-allinone-2.34/ ns-2.34/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_);
然后保存退出,重新安装ns2.
-----------------------------------------------------------------------------------------------------------------------------------------------
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.34/ ns-2.34/ mobile文件夹下,找到报错提示中的nakagami.cc文件,打开找到对应的183行删除::ErlangRandomVariable,保存,
即:将183行的
resultPower = ErlangRandomVariable::ErlangRandomVariable(Pr/m, int_m).value();
改为:
resultPower = ErlangRandomVariable(Pr/m, int_m).value();
在ns-allinone-2.34/ ns-2.34/ mobile文件夹下,找到报错提示中的nakagami.cc文件,打开找到对应的185行删除::GammaRandomVariable,保存,
即:将185行的
resultPower = GammaRandomVariable::GammaRandomVariable(m, Pr/m).value();
改为:
resultPower = GammaRandomVariable(m, Pr/m).value();
重新在ns目录下键入$ ./install安装,再次出现同类问题时,仿照此次解决方法,找到对应的文件和行数,修改即可。直到安装成功。
----------------------------------------------------------------------------------------------------------------------------------------------
3.错误三:安装成功之后,输入命令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]
ns(Tcl_GlobalEval+0x36)[0x83a2086]
ns(_ZN3Tcl4evalEPc+0x1b)[0x839438b]
ns(_ZN3Tcl5evalcEPKc+0xb3)[0x839435d]
ns(_ZN11EmbeddedTcl4loadEv+0x1d)[0x83952cf]
ns(Tcl_AppInit+0xb5)[0x83940ab]
ns(Tcl_Main+0x285)[0x83eb0c5]
ns(nslibmain+0x20)[0x8393fd4]
ns(main+0x1b)[0x8394147]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x382e37]
ns[0x81a8481]
======= Memory map: ========
00c38000-00c54000 r-xp 00000000 08:01 19439 /lib/i386-linux-gnu/ld-2.13.so
00c54000-00c55000 r--p 0001b000 08:01 19439 /lib/i386-linux-gnu/ld-2.13.so
00c55000-00c56000 rw-p 0001c000 08:01 19439 /lib/i386-linux-gnu/ld-2.13.so
00c5a000-00c5c000 r-xp 00000000 08:01 261673 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
00c5c000-00c5d000 r--p 00001000 08:01 261673 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
00c5d000-00c5e000 rw-p 00002000 08:01 261673 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
00cc0000-00ccd000 r-xp 00000000 08:01 268150 /usr/lib/i386-linux-gnu/libXext.so.6.4.0
00ccd000-00cce000 r--p 0000c000 08:01 268150 /usr/lib/i386-linux-gnu/libXext.so.6.4.0
00cce000-00ccf000 rw-p 0000d000 08:01 268150 /usr/lib/i386-linux-gnu/libXext.so.6.4.0
00ef9000-00f0c000 r-xp 00000000 08:01 19425 /lib/i386-linux-gnu/libnsl-2.13.so
00f0c000-00f0d000 r--p 00012000 08:01 19425 /lib/i386-linux-gnu/libnsl-2.13.so
00f0d000-00f0e000 rw-p 00013000 08:01 19425 /lib/i386-linux-gnu/libnsl-2.13.so
.......(注:这里省略了部分错误提示语句)
bfbbb000-bfbdc000 rw-p 00000000 00:00 0 [stack]
已放弃
这是gcc的版本问题,解决方法如下:
1.安装gcc-4.4
输入:sudo apt-get intall gcc-4.4
2.安装g++-4.4
输入:sudo apt-get intall g++-4.4
3.修改tcl8.4.18/unix文件夹下的文件Makefile.in
将Makefile.in的270行:
CC = @CC@
修改为:
CC = @CC@ -V 4.4
注意是大写的‘V’,这样gcc使用的参数版本为4.4。
重新安装ns2.34。.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5.问题解决了之后,不要忘记添加环境变量啊!
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yourfile/ns-allinone-2.34/otcl-1.13:/home/yourfile/ns-allinone-2.34/lib
export TCL_LIBRARY=$TCL_LIBRARY:/home/yourfile/ns-alllinone-2.34/tcl8.4.18/library
6.验证(测试)
(1)打开一个新的终端
(2)输入ns并回车
$ns (如果正常,回出现"%"操作提示符)
(3)输入一段测试用的Tcl脚本代码进行测试
%puts "Hello World" (输出Hello World字符串)
Hello World (如果正确,会显示Hello World)
% (然后跳到下一个"%"提示符等待下一条指令输入)
7.安装nam
cd ns-allinone-2.34/nam-1.14
./configure
make
sudo make install (至此,nam安装好)
8.至此,安装ns2终于结束了!太不容易了!!!