1、首先安装ns2所需的组件、库之类:

$sudo apt-get update
$sudo apt-get install build-essential
$sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev
$sudo apt-get install libxmu-dev libxmu-headers

2、查找包含x11-dev关键字的软件包,以防出现类似tk8.4.14,安装中断退出:

$sudo apt-cache search x11-dev

出现如下类似的命令:

ibx11-dev - X11 client-side library (development headers)

xlibs-dev - X Window System client library development files transitional package

libghc6-x11-dev - Haskell X11 binding for GHC

libooc-x11-dev - X11 specific modules for the oo2c compiler (devel)

libgl1-mesa-swx11-dev - A free implementation of the OpenGL API -- development    support  files

则分别安装上面的组件,命令如下:

$sudo apt-get install libx11-dev
$sudo apt-get install xlibs-dev
$sudo apt-get install libghc6-x11-dev
$sudo apt-get install libooc-x11-dev

3、编译ns2之前先修改两个地方(针对ununtu9.04以后的版本):

输入cd otcl-1.13,进入otcl-1.13目录,找到configure.in.将77行,SHLIB_LD="ld -shared"改为       SHLIB_LD="gcc -shared"

同时修改configure 第6304行SHLIB_LD="ld -shared"改为SHLIB_LD="gcc -shared"

4、先在otcl-1.13和tclcl8.4.18目录分别./configure make 之后再在/ns-2.34目录下./configure make,make完了之后一定记得sudo make install:

$sudo make install

这样保证在ns-2.34目录下./configure生成的Makefile中LIB的路径都是/home/muye/ns-allinone-2.34/下的otcl、tclcl

5、增添环境变量:

$sudo gedit /etc/profile

追加如下:

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

6、在/ns-2.34目录下./configure make完了之后一定记得sudo make install:

$sudo make install

每次修改ns2之后重新make之后也要这样做,保证ns的最新。

7、安装nam,在nam-1.14目录下./configure  make 之后,记得要修改main.cc文件,防止出现“nam: invalid command name "tcl_findLibrary"”:

#ifdef notdeffprintf(stderr, "Application name is %s\n", appname);
#endif
-#if 0
+//#if 0Tcl_Interp *interp = Tcl_CreateInterp();if (Tcl_Init(interp) == TCL_ERROR) {printf("%s\n", interp->result);abort();}
-#endif
+//#endif 

即注释掉if 0和endif。之后sudo make install即可。

出现的问题解决:

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

解决办法: 在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: 在成员函数‘u_int32_t PHY_MIBExt::getHdrLen11()’中: mac/mac-802_11Ext.h:175:19: 错误: expected primary-expression before ‘struct’ mac/mac-802_11Ext.h:175:41: 错误: ‘dh_body’在此作用域中尚未声明 mac/mac-802_11Ext.h:175:51: 错误: ‘offsetof’在此作用域中尚未声明 mac/mac-802_11Ext.h:177:3: 警告: 在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
                   解决办法: 在ns-allinone-2.34 s-2.34\mac\mac-802_11Ext.h 文件添加#include <cstddef>然后重新安装,就OK了。

错误三: mobile/nakagami.cc: 在成员函数‘virtual double Nakagami::Pr(PacketStamp*, PacketStamp*, WirelessPhy*)’中: mobile/nakagami.cc:185:67: 错误: 不能直接调用构造函数‘GammaRandomVariable::GammaRandomVariable’ [-fpermissive] mobile/nakagami.cc:185:67: 错误: 对于函数类型的类型转换,移除冗余的‘::GammaRandomVariable’ [-fpermissive]
                   解决办法: 在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(); 重新在ns目录下键入$ ./install安装,再次出现同类问题时,仿照此次解决方法,找到对应的文件和行数,修改即可。

(注意:往往在移植到别的平台时,尤其是x86到x86_64,在/ns-2.34目录下make clean有时候并不能够全部rm掉原来32位下生成的.o、.a文件,比如我在移植到64位安装时候出现:

/usr/bin/ld: i386 architecture of input file `common/main-monolithic.o' is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status

就是因为common/main-monolithic.o没有clean干净。

直接执行find . -name ".o" | xargs rm -rf)

nam出现如下问题时

nam_stream.o: In function `NamStreamCompressedFile::gets(char*, int)':
nam_stream.cc:(.text+0x1071): undefined reference to `gzgets'
nam_stream.o: In function `NamStreamCompressedFile::NamStreamCompressedFile(char const*)':
nam_stream.cc:(.text+0x10b4): undefined reference to `gzopen'
nam_stream.o: In function `NamStreamCompressedFile::NamStreamCompressedFile(char const*)':
nam_stream.cc:(.text+0x1136): undefined reference to `gzopen'
collect2: ld returned 1 exit status
make: *** [nam] Error 1

发现rm掉.o也没用,那么:

修改nam目录下的Makefile,添加-lz

LIB = \
-L/home/hct/ns-allinone-2.31/tclcl-1.19 -ltclcl -L/home/hct/ns-allinone-2.31/otcl -lotcl -L/home/hct/ns-allinone-2.31/lib -ltk8.4 -L/home/hct/ns-allinone-2.31/lib -ltcl8.4 -lz \

再make   sudo make install

nam如果出现如下问题

make 说找不到 X11/xmu/winutil.h,安装 libXmu-dev

sudo apt-get install  libXmu-dev

nam如果出现如下问题

执行nam提示:nam:no display name and no $DISPLAY environment variable,那么这是因为远程ssh到别的机器上无法进行图形界面,只能在那台机器上执行就好。

编译的时候出现"/usr/bin/ld: cannot find -lz"错误,需要安装zlib-dev这个包,在线安装命令为:apt-get install zlib1g-dev。

转载于:https://www.cnblogs.com/buptmuye/p/3451753.html

Ubuntu12.04中安装ns-allinone-2.34相关推荐

  1. ubuntu12.04中安装SVN记录

    首先:subversion(以下简称svn)是近年来崛起的版本管理工具 下载地址 http://subversion.apache.org/download/#recommended-release ...

  2. Ubuntu12.04中安装,卸载chrome谷歌浏览器,打开谷歌浏览器

    有时候安装完了找不到:直接在Dash Home,也就是任务栏最上面那个图标,输入chrome就可以了. 在软件中心里面找不到chrome的卸载,想要卸载的话,按照下面的步骤来就行: 试试看这个.. 代 ...

  3. NS-2.35和Ubuntu12.04的安装32bit

    安装过程受到挫折,最终还是成功了,主要参考以下两份材料,在这里记录下操作过程,希望对您有所帮助. 针对NS-2.35和Ubuntu12.04的安装32bit 网上ns2安装的教程有很多,很杂,有的有些 ...

  4. ubuntu12.04中shibboleth布署

    ubuntu12.04中shibboleth布署 0. 环境 操作系统:ubuntu12.04 shibboleth版本:2.4.4 gitlab版本:8.6 1.shibboleth框架 三台虚拟机 ...

  5. 在 Kubuntu 21.04 中安装和升级 KDE Plasma 5.2

    KDE 团队启用了向后移植 PPA,你可以使用它在 Kubuntu 21.04 Hirsute Hippo 中安装和升级到 KDE Plasma 5.22. KDE 团队最近发布了 KDE Plasm ...

  6. linux下安装虚拟天文馆,如何在Ubuntu 20.04、18.04中安装Stellarium 0.20.0虚拟天文馆

    如何在Ubuntu 20.04.18.04中安装Stellarium 0.20.0虚拟天文馆 几天前发布了Stellarium 0.20.0,它时一个免费开源的桌面虚拟天文馆软件.以下是在Ubuntu ...

  7. ubuntu共享usb接口给虚拟机_如何在虚拟机的Ubuntu12.04中使用外部USB设备

    2016-10-26 回答 让虚拟机可以使用host机上的外设,就必须在host中开启虚拟机的此项服务 本例为usb接口, 计算机右击选择管理,在弹出的计算机管理对话框中在左边一栏中选中"服 ...

  8. 在Ubuntu 18.04中安装JDK 8

    在Ubuntu 18.04中安装JDK 8 安装 Oracle JDK Webupd8 Team维护一个PPA存储库,其中包含适用于所有当前Ubuntu版本的Oracle Java 8安装程序脚本. ...

  9. linux mint 18.3浏览器,在Linux Mint 19/Ubuntu 18.04中安装Tor Browser浏览器的方法

    本文介绍在Linux Mint 19/Ubuntu 18.04系统中安装Tor Browser浏览器的方法,本文不使用Tor的默认Ubuntu存储库,因为它们包含旧版本的Tor. 一.添加Tor存储库 ...

  10. 怎样在 Ubuntu 13.04 Raring Ringtail , 12.10, 12.04 中安装和设置 Samba 实现网上邻居共享...

    Samba 是一款功能强大的共享工具,可以实现与windows的共享,就是我们经常在windows计算机之间使用的网上邻居功能,可以共享文件和打印机等.今天要介绍的是在 Ubuntu 13.04 Ra ...

最新文章

  1. JUnit基础及第一个单元测试实例
  2. 在linux中进程表示的是,Linux进程的表示
  3. 【Python-ML】非线性映射降维-KPCA方法
  4. 【arduino】继续蜂鸣器音乐播放,arduinoIDE里调用音乐播放库
  5. 蓝桥杯- 图形显示(java)
  6. 数据结构题:克鲁斯卡尔(Kruscal)算法求最小生成树
  7. [react] react中的key有什么作用?
  8. 服务器应用日志清理,Linux下Tomcat日志定期清理
  9. Servlet 2.4 规范之第四篇:Servlet上下文
  10. 商城后台管理系统Vue+Vue-Router+Element-UI+Axios+Echarts 黑马程序员视频笔记
  11. 如何关闭 Mac 版 QQ 上线离线提示音?
  12. hdu 5285 wyh2000 and pupil 二分图染色发判定,求最大匹配
  13. Flask 中 AssertionError: View function mapping is overwriting an existing endpoint function: decorate
  14. 九度OJ题目1035:找出直系亲属
  15. 分析了60款链游,发现40%的玩家都是机器人
  16. 仿朋友圈图片查看功能
  17. 统计学中sp_统计学假设检验中 p 值的含义具体是什么?
  18. 【JAVA 求差集】
  19. 蛮力法-分治法-处理最近对问题
  20. P2P平台方案——亿网软通“互联网+”金融解决方案

热门文章

  1. 【转】Golang 新手可能会踩的 50 个坑
  2. Python3 中使用sys.argv详解
  3. Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件:
  4. 【OOB】MSHTML!CPaste­Command::Convert­Bitmapto­Png heap-based buffer overflow学习
  5. 顺序右移数组元素(内测第0届第5题)
  6. 重读博弈论(八)---海萨尼转换与贝叶斯法则
  7. 5秒钟搭建一个简单版的restful资源服务器
  8. 1.1 echo rem cd dir命令
  9. 克劳斯比的零缺陷——《可以量化的管理学》
  10. Jquery-easyUI-datagrid参数之 queryParams