zoukankan      html  css  js  c++  java
  • 【NS2】Installing ns-2.29 in Ubuntu 12.04

    Installing ns-2.29 in Ubuntu 12.04

     
     

    Off late, we try to use(install) a old software in a new Operating System for want of backward compatibility or to survey.  This following post shows you how to install ns-2.29 in Ubuntu 12.04.

    Unlike other ns2 installations, this installation has so many errors, warnings and patchings. Once everything is overcome, ns installs successfully

    Step 1: Download and untar ns-2.29 from this link (http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.29/ns-allinone-2.29.3.tar.gz/download)

    Step 2: install the necessary dependancy packages using the command "sudo apt-get install build-essential libxmu-dev autoconf automake" (without quotes). This will install the necessary developmental packages

    Step 3: Since ns-2.29 is older software, some of the pointer conversion have to be changed inside ns-2.29

    Step 4: go to terminal, point to the location of ns-allinone-2.29 using the command "cd ~/ns-allinone-2.29/" and type "./install"

    Step 5: there may be the following errors during the installation, please correct one by one

    1. OTcl-1.11 error make failed.

    for this error, open the file under the folder otcl-1.11/configure.in and go to line number  

    Change the following block to 

     Linux*)

            SHLIB_CFLAGS="-fpic"

            SHLIB_LD="ld -shared"

            SHLIB_SUFFIX=".so"

            DL_LIBS="-ldl"

            SHLD_FLAGS=""

            ;;

    Linux*)
            SHLIB_CFLAGS="-fpic"
            SHLIB_LD="gcc -shared"
            SHLIB_SUFFIX=".so"
            DL_LIBS="-ldl"
            SHLD_FLAGS=""
            ;;
     
    2. tclcl-1.17 error, in line number 566 of Tcl.cc file (~tclcl-1.17/Tcl.cc) (See the upper case Tcl.cc)
    change the following to 
    char *p = strchr(localName, '(');
    this following line
    char *p =const_cast<char*>( strchr(localName, '('));
     
    3. there will be so many errors in the queue/ folder (~ns-allinone-2.29/ns-2.29/queue/), there may be some pointer conversion errors
    Error 1:
    ------
    queue/red.cc:877:41: error: invalid conversion from ‘const char*’ to ‘char*’
    make: *** [queue/red.o] Error 1
    In queue/red.cc at 874 line
    Change the following to
     
    if (((p = strstr(v->name(), "ave")) == NULL) &&
        ((p = strstr(v->name(), "prob")) == NULL) &&
        ((p = strstr(v->name(), "curq")) == NULL) &&
        ((p = strstr(v->name(), "cur_max_p"))==NULL) ) {
    this 
    if (((p = const_cast<char*>(strstr(v->name(), "ave"))) == NULL) &&
           ((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
            ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL) &&
           ((p = const_cast<char*>(strstr(v->name(), "cur_max_p")))==NULL) ) {
     
     
    Error 2:
    queue/rio.cc:568:36: error: invalid conversion from ‘const char*’ to ‘char*’
    queue/rio.cc:569:39: error: invalid conversion from ‘const char*’ to ‘char*’
    queue/rio.cc:570:40: error: invalid conversion from ‘const char*’ to ‘char*’
    queue/rio.cc:571:36: error: invalid conversion from ‘const char*’ to ‘char*’
    make: *** [queue/rio.o] Error 1
     
    in queue/rio.cc and in line number 565 
     find the following lines
    if (((p = strstr(v->name(), "ave")) == NULL) &&
        ((p = strstr(v->name(), "in_ave")) == NULL) &&
        ((p = strstr(v->name(), "out_ave")) == NULL) &&
        ((p = strstr(v->name(), "prob")) == NULL) &&
        ((p = strstr(v->name(), "in_prob")) == NULL) &&
        ((p = strstr(v->name(), "out_prob")) == NULL) &&
        ((p = strstr(v->name(), "curq")) == NULL)) {
     
    and replace these lines
    if (((p = const_cast<char*>(strstr(v->name(), "ave"))) == NULL) &&
           ((p = const_cast<char*>(strstr(v->name(), "in_ave"))) == NULL) &&
            ((p = const_cast<char*>(strstr(v->name(), "out_ave"))) == NULL) &&
           ((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
            ((p = const_cast<char*>(strstr(v->name(), "in_prob"))) == NULL) &&
            ((p = const_cast<char*>(strstr(v->name(), "out_prob"))) == NULL) &&
            ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL)) {
     
     
    Error 3: 
    queue/pi.cc:316:36: error: invalid conversion from ‘const char*’ to ‘char*’
    queue/pi.cc:317:36: error: invalid conversion from ‘const char*’ to ‘char*’
    make: *** [queue/pi.o] Error 1


    in queue/pi.cc at line number 316
    Find these lines and 
     
    if (((p = strstr(v->name(), "prob")) == NULL) &&
        ((p = strstr(v->name(), "curq")) == NULL)) {
     
    replace with these lines
     
     if (((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
            ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL)) {
     
    Error 4:
     
    queue/vq.cc: In member function ‘virtual void Vq::trace(TracedVar*)’:
    queue/vq.cc:333:35: error: invalid conversion from ‘const char*’ to ‘char*’
    make: *** [queue/vq.o] Error 1
    Find the following line and
    if ((p = strstr(v->name(), "curq")) == NULL) {
    replace this line
    if ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL) {
     
    Error 5
    queue/rem.cc:337:36: error: invalid conversion from ‘const char*’ to ‘char*’
    queue/rem.cc:338:36: error: invalid conversion from ‘const char*’ to ‘char*’
    make: *** [queue/rem.o] Error 1

    In queue/rem.cc: in line number 336
    Find the following lines and 
    if (((p = strstr(v->name(), "ave")) == NULL) &&
        ((p = strstr(v->name(), "prob")) == NULL) &&
        ((p = strstr(v->name(), "curq")) == NULL)) {
     
    replace these lines
    if (((p =const_cast<char*>(strstr(v->name(), "ave"))) == NULL) &&
           ((p = const_cast<char*>(strstr(v->name(), "prob"))) == NULL) &&
           ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL)) {
     
     
    Error 6: 
    queue/gk.cc:207:35: error: invalid conversion from ‘const char*’ to ‘char*’
    make: *** [queue/gk.o] Error 1

    In queue/gk.cc in line number 207
    find the following line and 
    if ((p = strstr(v->name(), "curq")) == NULL) {
     replace this line
    if ((p = const_cast<char*>(strstr(v->name(), "curq"))) == NULL) {
     
    Step 6: Once the errors are corrected, go back to ns-allinone-2.29 and press ./install and see whether the installation is successful
    Step 7: Set the PATH information in /home/pradeep/.bashrc and  execute "source .bashrc"
    Check whether ns and nam are working (for me nam was not working, Since mine is ubuntu I installed NAM separately using "sudo apt-get install nam"
     
    Thats all!!!!.
  • 相关阅读:
    linux 经常使用配置
    Binder Proxy技术方案
    Android 通过系统使用NotificationListenerService 监听各种Notification的用法
    苟富贵勿相忘
    使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
    JAVA: httpclient 具体解释——第五章;
    Unity入门
    向架构师进军---&gt;怎样编写软件架构文档
    SendMessage、PostMessage原理
    用GDB调试程序(一)
  • 原文地址:https://www.cnblogs.com/helloWaston/p/4566347.html
Copyright © 2011-2022 走看看