Skip to main content

Installation of ns3 in Ubuntu | Ubuntu 24.04 | ns-3.42

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!!!!.

Comments

  1. I succesfuulyinstal otcl but getting error in tcl.This is the error i am getting...

    Tcl.cc: In member function ‘void Tcl::eval(char*)’:
    Tcl.cc:182:8: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    Tcl.cc: In member function ‘int TclObject::traceVar(const char*, TclObject*)’:
    Tcl.cc:421:50: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    Tcl.cc: In static member function ‘static int TclClass::create_shadow(ClientData, Tcl_Interp*, int, const char**)’:
    Tcl.cc:509:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    Tcl.cc:511:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    Tcl.cc: In static member function ‘static int TclClass::dispatch_instvar(ClientData, Tcl_Interp*, int, const char**)’:
    Tcl.cc:566:54: error: expected ‘)’ before ‘;’ token
    Tcl.cc:571:72: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    Tcl.cc: In member function ‘virtual void TclClass::bind()’:
    Tcl.cc:603:60: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    Tcl.cc:605:60: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    make: *** [Tcl.o] Error 1
    tclcl-1.17 make failed! Exiting ...

    ReplyDelete
    Replies
    1. See the post, it contains the info to correct the Tcl.cc error.

      Delete
  2. Thank You very Much Sir for sharing such a nice and useful material. Help me a lot!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Babar Shah
    PhD scholar

    ReplyDelete
  3. Thankz a lott SIR, itz working

    ReplyDelete
  4. Thank you very much, sir, I have successfully installed NS2.29 on the ubuntu16.04 system through your solution.

    ReplyDelete

Post a Comment

Popular posts from this blog

Installing ns3 in Ubuntu 22.04 | Complete Instructions

In this post, we are going to see how to install ns-3.36.1 in Ubuntu 22.04. You can follow the video for complete details Tools used in this simulation: NS3 version ns-3.36.1  OS Used: Ubuntu 22.04 LTS Installation of NS3 (ns-3.36.1) There are some changes in the ns3 installation procedure and the dependencies. So open a terminal and issue the following commands Step 1:  Prerequisites $ sudo apt update In the following packages, all the required dependencies are taken care and you can install all these packages for the complete use of ns3. $ sudo apt install g++ python3 python3-dev pkg-config sqlite3 cmake python3-setuptools git qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gsl-bin libgsl-dev libgslcblas0 wireshark tcpdump sqlite sqlite3 libsqlite3-dev  libxml2 libxml2-dev libc6-dev libc6-dev-i386 libclang-dev llvm-

Installation of NS2 (ns-2.35) in Ubuntu 20.04

Installation of NS2 (ns-2.35) in Ubuntu 20.04 LTS Step 1: Install the basic libraries like      $] sudo apt install build-essential autoconf automake libxmu-dev Step 2: install gcc-4.8 and g++-4.8 open the file using sudo mode $] sudo nano /etc/apt/sources.list Include the following line deb http://in.archive.ubuntu.com/ubuntu bionic main universe $] sudo apt update $] sudo apt install gcc-4.8 g++-4.8 Step 3:  Unzip the ns2 packages to home folder $] tar zxvf ns-allinone-2.35.tar.gz $] cd ns-allinone-2.35/ns-2.35 Modify the following make files. ~ns-2.35/Makefile.in Change @CC@ to gcc-4.8 change @CXX@ to g++-4.8 ~nam-1.15/Makefile.in ~xgraph-12.2/Makefile.in ~otcl-1.14/Makefile.in Change in all places  @CC@ to gcc-4.8 @CPP@ or @CXX@ to g++-4.8 open the file: ~ns-2.35/linkstate/ls.h Change at the Line no 137  void eraseAll() { erase(baseMap::begin(), baseMap::end()); } to This void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); } All changes made Step 4: Open a new termi

Installation of NS2 in Ubuntu 22.04 | NS2 Tutorial 2

NS-2.35 installation in Ubuntu 22.04 This post shows how to install ns-2.35 in Ubuntu 22.04 Operating System Since ns-2.35 is too old, it needs the following packages gcc-4.8 g++-4.8 gawk and some more libraries Follow the video for more instructions So, here are the steps to install this software: To download and extract the ns2 software Download the software from the following link http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download Extract it to home folder and in my case its /home/pradeepkumar (I recommend to install it under your home folder) $ tar zxvf ns-allinone-2.35.tar.gz or Right click over the file and click extract here and select the home folder. $ sudo apt update $ sudo apt install build-essential autoconf automake libxmu-dev gawk To install gcc-4.8 and g++-4.8 $ sudo gedit /etc/apt/sources.list make an entry in the above file deb http://in.archive.ubuntu.com/ubuntu/ bionic main universe $ sudo apt update Since, it&#