ubuntu11.04版本安装ns2.34(吐血)

之前在ubuntu11.04下安装ns2.34的,按网上攻略需要做以下步骤:

1、更新

在终端中输入以下命令,当然首先要保证网络畅通和更新源可用,更新源可以去网上找,很多

$ 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-head

2、修改配置文件

gcc 4.0版本以前是用ld -share来生成共享库的,但是到了4.0以上的版本(我的为gcc version 4.4.3),这个命令改为了gcc -share。

查看自己gcc版本的命令: gcc –version或者gcc -v

So,对于Ubuntu 11.04版,要修改两个配置文件:

命令: $cd /opt/ns-allinone-2.34/otcl-1.13
$sudo gedit configure.in
把 第77行的
SHLIB_LD="ld -shared"
修改成
SHLIB_LD="gcc -shared
存档退出
命令: $sudo gedit configure
把 第6304行附近
SHLIB_LD="ld -shared"
修 改成
SHLIB_LD="gcc -shared"

存档退出

在文本文档中查询行数的快捷键:Ctrl+I。

3、错误

直接安装会出现各种BT的错误:

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版本提高后对类内部函数调用的简化造成的不兼容,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_);

  • 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();

4、黎明前的黑暗

好不容易安装成功,结果在终端运行ns,出现错误:

*** buffer overflow detected ***: ns terminated

======= Backtrace: =========

/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0x451df0]

.......(注:这里省略了部分错误提示语句)

bfbbb000-bfbdc000 rw-p 00000000 00:00 0 [stack]

已放弃

这是gcc的版本问题,解决方法如下:

A、安装gcc-4.4

输入:sudo apt-get intall gcc-4.4

不知道为什么,我输入这条命令之后出现:

ubuntu11.04版本安装ns2.34(吐血)


笔者作为菜鸟,在网上找了半天没找到解决办法,实在不行只能放弃了。

B、安装g++-4.4

输入:sudo apt-get intall g++-4.4

出现和上面一样的问题

C、修改tcl8.4.18/unix文件夹下的文件Makefile.in

Makefile.in270行:

CC = @CC@

修改为:

CC = @CC@ -V 4.4

注意是大写的‘V’,这样gcc使用的参数版本为4.4

重新安装ns2.34.

总结:

费尽千辛万苦九牛二虎之力才装好,版本高果然不见得是好事,由于我最后一步没成功,所以果断换了ubuntu10.04系统,自带gcc 4.4.3版本,参见前一篇文章,轻松成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值