zoukankan      html  css  js  c++  java
  • ubantu16.04安装ns2.34 错误

    把ns2.34解压缩之后,sudo ./install

    出现的错误:

    错误一:安装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.

    ======================================================================================

    错误二

    In file included from mac/mac-802_11Ext.cc:66:0:

    mac/mac-802_11Ext.h: In member function ‘u_int32_t PHY_MIBExt::getHdrLen11()’:

    mac/mac-802_11Ext.h:175:19: error: expected primary-expression before ‘struct’

    mac/mac-802_11Ext.h:175:41: error: ‘dh_body’ was not declared in this scope

    mac/mac-802_11Ext.h:175:51: error: ‘offsetof’ was not declared in this scope

    mac/mac-802_11Ext.h:177:3: warning: control reaches end of non-void function [-Wreturn-type]

    make: *** [mac/mac-802_11Ext.o] Error 1


    Ns make failed!

    下面是网上找得关于本问题的解决方案:

    If you get error like:

    mac/mac-802_11Ext.h: In member function ‘u_int32_t PHY_MIBExt::getHdrLen11()’:
    mac/mac-802_11Ext.h:176:19: error: expected primary-expression before ‘struct’
    mac/mac-802_11Ext.h:176:41: error: ‘dh_body’ was not declared in this scope
    mac/mac-802_11Ext.h:176:51: error: ‘offsetof’ was not declared in this scope

    open that file and add

    #include <cstddef>

    to the header files.
    在ns-allinone-2.34 s-2.34macmac-802_11Ext.h 文件添加#include <cstddef>
    然后重新安装,就OK了。

    =============================================================================

    错误三:

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

    =============================================================================

    错误四:

    In file included from linkstate/ls.cc:67:0:
    linkstate/ls.h: In instantiation of ‘void LsMap<Key, T>::eraseAll() [with Key = int; T = LsIdSeq]’:
    linkstate/ls.cc:396:28:   required from here
    linkstate/ls.h:137:58: 错误:‘erase’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
      void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
                                                              ^
    linkstate/ls.h:137:58: 附注:declarations in dependent base ‘std::map<int, LsIdSeq, std::less<int>, std::allocator<std::pair<const int, LsIdSeq> > >’ are not found by unqualified lookup
    linkstate/ls.h:137:58: 附注:use ‘this->erase’ instead
    Makefile:93: recipe for target 'linkstate/ls.o' failed
    make: *** [linkstate/ls.o] Error 1
    解决方法:
    Go to ns-allinone-2.35/ns-2.35/linkstate/
    
    b.Now edit ls.h
    In line number 137, in place of void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
    make it void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }

    =============================================================================

    重新在ns目录下键入$ ./install安装,再次出现问题时,仿照解决方法,找到对应的文件和行数,修改即可。至此安装成功。

    配置环境:修改home/wang目录下的 .bashrc文件

    打开终端:sudo gedit .bashrc

    在文件最后输入:

    export PATH=$PATH:/home/wang/ns/ns-allinone-2.34/bin:/home/wang/ns/ns-allinone-2.34/tcl8.4.18/unix:/home/wang/ns/ns-allinone-2.34/tk8.4.18/unix
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wang/ns/ns-allinone-2.34/otcl-1.13:/home/wang/ns/ns-allinone-2.34/lib
    export TCL_LIBRARY=$TCL_LIBRARY:/home/wang/ns/ns-alllinone-2.34/tcl8.4.18/library

    =======================================================================================================================

    终端输入ns之后出现%之后,说明暂时成功了。

    运行./validate(貌似在ns-2.34目录下??)

    会出现问题:

    解决方法:

    1. 网上说是gcc版本过高的问题,我们把gcc版本降为4.4。教程:http://blog.sina.com.cn/s/blog_6cee149d010129bl.html

    2. 可能有些包没有安装:(这个存疑,可以安装试试)

    sudo apt-get install libx11-dev xorg-dev libxmu-dev libperl4-corelibs-perl

    貌似还是没能解决!!!!
  • 相关阅读:
    HTML 网页创建
    CSS3 opacity
    两数相加的和
    九九乘法表
    Linux下的Makefile初入
    linux 下定义寄存器宏 实现类似于STM32的寄存器操作
    Linux 编译与交叉编译
    linux IMX6 汇编点亮一个LED灯
    Linux基本指令与作用
    C# Task 源代码阅读(2)
  • 原文地址:https://www.cnblogs.com/wang-130213/p/9121449.html
Copyright © 2011-2022 走看看