Ubuntu 12.10+ns-2.34安装
之前装了N个版本的ns2,cygwin+ns2.35,fedora+ns2.35,cygwin+ns2.28,cygwin+ns2.30,安装都很顺利,但是运行例程wireless-dsdv-newnode.tcl时都显示一个错误:
num_nodes is set 50
(_o16 cmd line 1)
invoked from within
"_o16 cmd random-motion 0"
invoked from within
"catch "$self cmd $args" ret"
invoked from within
"if [catch "$self cmd $args" ret] {
set cls [$self info class]
global errorInfo
set savedInfo $errorInfo
error "error when calling class $cls: $args" $..."
(procedure "_o16" line 2)
(SplitObject unknown line 2)
invoked from within
"$node_($i) random-motion 0 "
invoked from within
"if { [string compare $opt(rp) "dsr"] == 0} {
for {set i 0} {$i < $opt(nn) } {incr i} {
dsr-create-mobile-node $i
}
} elseif { [string compare $op..."
(file "wireless-dsdv-newnode.tcl" line 176)
每个版本的ns2这个问题都是如此,由于刚开始接触道行尚浅,不知问题何在,最后不得不重新投靠Ubuntu,于是安装Ubuntu12.10+ns2.34
安装过程中遇到问题不外乎GCC 版本问题:
一,修改configure.in与configure,具体操作网上一堆
二,根据错误提示修改部分.h或者.cc文件,如:
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.
解决办法来源与别人的博客,附地址:http://blog.sina.com.cn/s/blog_6ddfdc6701018fk1.html
安装完后测试那个例程问题依旧,但是测试了一个别人的例子一切正常,例子链接如下:
http://peilie-coolboy.blog.163.com/blog/static/2395237120124175126381/
学习从此开始!
posted on 2013-05-13 14:08 Eric.He.yeah 阅读(486) 评论(0) 编辑 收藏 举报