zoukankan      html  css  js  c++  java
  • 【工具】NS2安装记录

    献给同样为了NS2抓破了头皮的同志们。 

    1, Get Started:
    http://www.isi.edu/nsnam/ns/ns-build.html#allinone

    Build by pieces: 手动编译需要按顺序下载编译以下软件包:
    Tcl release 8.5.10 (required component)
    Tk release 8.5.10 (required component)
    Otcl release 1.14 (required component)
    TclCL release 1.20 (required component)
    Ns release 2.35 (required component)
    Nam release 1.15 (optional component)
    Xgraph version 12 (optional component)
    CWeb version 3.4g (optional component)
    SGB version 1.0 (?) (optional component, builds sgblib for all UNIX type platforms)
    Gt-itm gt-itm and sgb2ns 1.1 (optional component)
    Zlib version 1.2.3 (optional, but required should Nam be used)

    2, download all in once: ns-allinonce-2.35.tar.gz

    3, tar zxvf ns-allinonce-2.35.tar.gz;
    ./install

    4, tk8.5.10安装出错。(tk最新版本是8.6.1。)

    In file included from /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/unix/../generic/tkInt.h:19,
    from /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/unix/../generic/tk3d.c:14:
    /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/unix/../generic/tk.h:76:23: error: X11/Xlib.h: No such file or directory

    ......


    5, 网上查到:若在ubuntu上安装ns2要先装几个库文件:
    (1)sudo apt-get install build-essential,这样可以安装gcc,make。
    (2)安装tk,tcl
    sudo apt-get install tcl8.4
    sudo apt-get install tcl8.4-dev
    sudo apt-get install tk8.4
    sudo apt-get install tk8.4-dev
    (3)sudo apt-get install libxmu-dev,是和nam有关的东西。


    6, sudo apt-get install build-essential
    再次尝试./install【相同的失败】

    7, sudo apt-get install tk8.5
    sudo apt-get install tk8.5-dev
    再次尝试./install
    【tk安装成功,otcl-1.14 configuration failed!】

    8, 网上查到:can't find X includes

    otcl-1.11 configuration failed Exiting ...

    安装x-window-system-dev可以解决问题

    另:

    安装libXt-dev可以解决问题

    sudo apt-get install libXt-dev
    9, apt-cache search x11-dev
    libghc6-x11-dev - Haskell X11 binding for GHC
    libwx11-dev - library to manage xlib - devel
    libgl1-mesa-swx11-dev - A free implementation of the OpenGL API -- development files
    libx11-dev - X11 client-side library (development headers)
    然后一一安装。(为什么要安装X11 dev?)
    【安装NS2成功】

    10, 安装出错时,实际上考官方的解决方法:http://www.isi.edu/nsnam/ns/ns-problems.html

    11, 环境变量设置:
    IMPORTANT NOTICES:

    (1) You MUST put /home/chn/Desktop/ns-allinone-2.35/otcl-1.14, /home/chn/Desktop/ns-allinone-2.35/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/chn/Desktop/ns-allinone-2.35/tcl8.5.10/library into your TCL_LIBRARY environmental
    variable. Otherwise ns/nam will complain during startup.

    这些对于Ubuntu,还需要配置PATH变量。总的来说是这样的:

    export NS_HOME=/home/chn/Desktop/ns-allinone-2.35

    PATH="$PATH:$NS_HOME/bin:$NS_HOME/tcl8.5.10/unix:$NS_HOME/tk8.5.10/unix"

    export LD_LIBRARY_PATH="$NS_HOME/otcl-1.14,$NS_HOME/lib"
    export TCL_LIBRARY="$NS_HOME/tcl8.5.10/library"

    把以上代码加到~/.bashrc中。使用命令source ~/.bashrc可以使上述环境变量立即生效。

    After these steps, you can now run the ns validation suite with
    cd ns-2.35; ./validate

    进入漫长的validating process(漫长,据说1个小时?)

    【END】

    example

    NS2的example在ns-2.35/tcl/ex/中。运行: ns <tcl filename>

    12, 运行ns wireless-flooding.tcl【报错!】 

    nam: Can't find a usable tk.tcl in the following directories:
    /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/library /home/chn/Desktop/ns-allinone-2.35/tcl8.5.10/library/tk8.5 /home/chn/Desktop/ns-allinone-2.35/tcl8.5.10/tk8.5 ./lib/tk8.5 /home/chn/Desktop/ns-allinone-2.35/lib/tk8.5 ./library

    /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/library/tk.tcl: wrong # args: should be "::source fileName"
    wrong # args: should be "::source fileName"
    while executing
    "::source -encoding utf-8 /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/library/msgs/en.msg"
    ("uplevel" body line 1)
    invoked from within
    "uplevel 1 [list ::source -encoding utf-8 $langfile]"
    (procedure "::msgcat::mcload" line 10)
    invoked from within
    "::msgcat::mcload [file join $::tk_library msgs]"
    (in namespace eval "::tk::msgcat" script line 23)
    invoked from within
    "namespace eval msgcat {
    namespace export mc mcmax
    if {[interp issafe] || [catch {package require msgcat}]} {
    # The msgcat package..."
    (in namespace eval "::tk" script line 3)
    invoked from within
    "namespace eval ::tk {
    # Set up the msgcat commands
    namespace eval msgcat {
    namespace export mc mcmax
    if {[interp issafe] || [catch {p..."
    (file "/home/chn/Desktop/ns-allinone-2.35/tk8.5.10/library/tk.tcl" line 21)
    invoked from within
    "source.orig /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/library/tk.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel source.orig [list $fileName]"
    invoked from within
    "if [$instance_ is_http_url $fileName] {
    set buffer [$instance_ read_url $fileName]
    uplevel eval $buffer
    } else {
    uplevel source.orig [list $fileName]
    ..."
    (procedure "source" line 8)
    invoked from within
    "source /home/chn/Desktop/ns-allinone-2.35/tk8.5.10/library/tk.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel #0 [list source $file]"
    /home/chn/Desktop/ns-allinone-2.35/lib/tk8.5/tk.tcl: wrong # args: should be "::source fileName"
    wrong # args: should be "::source fileName"
    while executing
    "::source -encoding utf-8 /home/chn/Desktop/ns-allinone-2.35/lib/tk8.5/msgs/en.msg"
    ("uplevel" body line 1)
    invoked from within
    "uplevel 1 [list ::source -encoding utf-8 $langfile]"
    (procedure "::msgcat::mcload" line 10)
    invoked from within
    "::msgcat::mcload [file join $::tk_library msgs]"
    (in namespace eval "::tk::msgcat" script line 23)
    invoked from within
    "namespace eval msgcat {
    namespace export mc mcmax
    if {[interp issafe] || [catch {package require msgcat}]} {
    # The msgcat package..."
    (in namespace eval "::tk" script line 3)
    invoked from within
    "namespace eval ::tk {
    # Set up the msgcat commands
    namespace eval msgcat {
    namespace export mc mcmax
    if {[interp issafe] || [catch {p..."
    (file "/home/chn/Desktop/ns-allinone-2.35/lib/tk8.5/tk.tcl" line 21)
    invoked from within
    "source.orig /home/chn/Desktop/ns-allinone-2.35/lib/tk8.5/tk.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel source.orig [list $fileName]"
    invoked from within
    "if [$instance_ is_http_url $fileName] {
    set buffer [$instance_ read_url $fileName]
    uplevel eval $buffer
    } else {
    uplevel source.orig [list $fileName]
    ..."
    (procedure "source" line 8)
    invoked from within
    "source /home/chn/Desktop/ns-allinone-2.35/lib/tk8.5/tk.tcl"
    ("uplevel" body line 1)
    invoked from within
    "uplevel #0 [list source $file]"


    This probably means that tk wasn't installed properly.

    经过半天多辛苦的搜索、尝试,终于在一个google group里找到了办法。现将其扩散:

    https://groups.google.com/forum/#!msg/ns-users/HymDffbZW4A/6gF-T4jeBWIJ

    export TCL_LIBRARY=/home/username/Desktop/ns-allinone-2.35/tcl8.5.10/library:/home/username/Desktop/ns-allinone-2.35/tk8.5.10/library

    And run "source ~./bashrc" in terminal.

    【真正的END】

  • 相关阅读:
    阻止页面右键事件
    拖拽效果
    关于事件捕获
    放大镜效果
    如何不用border-radius 写圆角边框
    力扣—— Swap Nodes in Pairs(两两交换链表中的节点) python实现
    力扣—Remove Nth Node From End of List(删除链表的倒数第N个节点) python实现
    力扣 ——Remove Duplicates from Sorted List II(删除排序链表中的重复元素 II)python实现
    力扣 — Rotate List()
    力扣—Remove Duplicates from Sorted List(删除排序链表中的重复元素)python实现
  • 原文地址:https://www.cnblogs.com/zhchngzng/p/3584651.html
Copyright © 2011-2022 走看看