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

【NS2】Installing ns-2.29 in Ubuntu 12.04的更多相关文章

  1. 【ejabberd】安装XMPP服务器ejabberd(Ubuntu 12.04)

    ejabberd ejabberd is a free and open source instant messaging server written in Erlang/OTP. ejabberd ...

  2. 【转】Windows 7下硬盘安装Ubuntu 14.04图文教程--不错

    原文网址:http://www.linuxidc.com/Linux/2014-04/100369p3.htm Ubuntu 官方已经发布了正式版的 Ubuntu 14.04 LTS,并宣称这是为云计 ...

  3. 【转】Installing OpenCV on Debian Linux

    In this post I will describe the process of installing OpenCV(both versions 2.4.2 and 2.4.3) on Debi ...

  4. 【转】用VMware 8安装Ubuntu 12.04详细过程(图解)

    图解演示环境版本: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像文 ...

  5. 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统

    上一步,我们安装了VMware9虚拟机,现在我们就是用它来安装Ubuntu12.04系统,至于Ubuntu是什么,我就不废话了,大家google一下,比我讲的清楚,好了,开始干活! Ubuntu官网下 ...

  6. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(三)——计算节点的安装

    序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 计算节点: 1.准备结点 安装好ubuntu 12.04 Server 64bits后,进入ro ...

  7. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(二)——网络节点的安装

    序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 网络节点: 1.安装前更新系统 安装好ubuntu 12.04 Server 64bits后,进 ...

  8. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(一)——控制节点的安装

      序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 控制节点: 1.准备Ubuntu 安装好Ubuntu12.04 server 64bits后 ...

  9. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】——序

    OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE](一)——控制节点的安装 OpenStack Havana 部署在Ubuntu 12.04 Serve ...

随机推荐

  1. pytorch 多GPU处理过程

    多GPU的处理机制: 使用多GPU时,pytorch的处理逻辑是: 1.在各个GPU上初始化模型. 2.前向传播时,把batch分配到各个GPU上进行计算. 3.得到的输出在主GPU上进行汇总,计算l ...

  2. Leetcode103. Binary Tree Zigzag Level Order Traversal二叉树的锯齿形层次遍历

    给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / ...

  3. 2016年省赛 G Triple Nim

    2016年省赛 G Triple Nimnim游戏,要求开始局面为先手必败,也就是异或和为0.如果n为奇数,二进制下最后一位只有两种可能1,1,1和1,0,0,显然异或和为1,所以方案数为0如果n为偶 ...

  4. 在C#应用中使用Common Logging日志接口

    我在C#应用中一般使用log4net来记录日志,但如果项目中有个多个工程,那么没有工程都需要引用log4neg,感觉很不爽.不过今日在开spring.net的时候,看到了有个通用日志接口Common ...

  5. 【arc077f】AtCoder Regular Contest 077 F - SS

    题意 给你一个形如"SS"的串S,以及一个函数\(f(x)\),\(x\)是一个形如"SS"的字符串,\(f(x)\)也是一个形如"SS"的 ...

  6. 数据库----SQL基本查询

    SQL基本查询 查表 :show create table 表名(show tables); describe 表名:(desc 表名)// 模糊查询:show table like '%c%';(查 ...

  7. case 和decode的区别

    区别: decode是pl/sql语法,只能在oracle中使用,case when是标准SQL的语法,哪儿都能用,也就是说移植性更强. decode像是case when的精简版,当要实现的功能比较 ...

  8. zk运维注意事项

    1 连接数容易占满 2 watches数 (应用上的比较多建议做个自动监控,告警)

  9. Leetcode598.Range Addition II范围求和2

    给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 < ...

  10. django中模型

    一.django需要使用数据库,则需要安装对应的驱动,比如mysql,则需要安装mysqlclient驱动: pip install mysqlclient 二.在settings.py文件中配置数据 ...