首页 > 程序开发 > 综合编程 > 其他综合 >

NS安装 NS2.35 Ubuntu16.04

2017-04-12

NS安装 NS2 35 Ubuntu16 04:NS必须在Linux和Unix的环境下运行,也有在windows下的,但是很麻烦,一般都用windows+虚拟机+NS的情况。

NS安装 NS2.35 Ubuntu16.04:NS必须在Linux和Unix的环境下运行,也有在windows下的,但是很麻烦,一般都用windows+虚拟机+NS的情况。

以下我以Ubuntu16为例纪录安装过程。

一开始是按照Ubuntu12.04+ns2.29的教程来安装的,结果各种错误一塌糊涂。
后面明确了2.35是比较推荐的版本,我用的又是Ubuntu16.04,强烈建议大家安装的时候认准版本。下面是我参考的两个教程。

0 先更新一下系统的安装源

sudo apt-get update #更新源列表 
sudo apt-get upgrade #更新已经安装的包 
sudo apt-get dist-upgrade #更新软件,升级系统

这个有的时候很有必要,Ubuntu的源有时会莫名其妙的不能用了

1 安装NS前的必要库文件的安装

编译器gcc make
sudo apt-get install build-essential
tk、tcl的库文件
sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev

特别说明:安装这个依赖包后,在以后调试涉及./configure时会提示找不到tcl的路径,解决方法是 ./configure –with-tcl-ver=8.5(后面会碰到,先不管)

与nam相关的库文件
sudo apt-get install libxmu-dev libxmu-headers

2 NS安装

下载ns2的安装包,选择的是ns-allinone-2.35.tar.gz压缩格式的all in one安装包,all in one 安装包包含所有的组件,比较方便。
另附下载地址:
http://www.isi.edu/nsnam/ns/ns-build.html。 下载后转移到安装目录下,比如/home/lkj/Software/ns
建议下载后直接放在目录/home/用户名/,若是放在其他比如usr/等下面,必须切换root账号才能进行操作,编辑时会出现各种头疼的操作 把压缩包剪切到这里,解压tar -xzvf ns-allinone-2.35.tar.gz 进入解压后的文件夹,开始安装NS./install

这个时候会遇到错误

编译之路不会一帆风顺,第一次遇到的错误是:
linkstate/ls.h:137:20: note: use ‘this->erase’ instead 
make: * [linkstate/ls.o] Error 1 
Ns make failed!
修改方法
修改ls文件,位置是:ns-2.35/linkstate/ls.h
第137行
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
改为:
void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
也就是把erase用this->erase替换掉就好了
保存后,重新然后执行 ./install #重新安装顺利完成。

这是因为ubuntu16.04的gcc编译版本太高,而ns2.35是2011年发布的,当时ubuntu的gcc版本比较低的,需要注意的是gcc4.4版本后,有些格式不能向下兼容,好吧,这个问题很是头疼,最笨也是最直接的方法就是直接改动源码,把出现问题的代码部分改成能被高版本gcc编译的格式

3 环境变量配置

修改当前用户环境变量(对应的文件为’/home/用户名’中的.bashrc,并非’/ns-allinone-2.35’底下的空白.bashrc)
gedit  ~/.bashrc
在文件最后添加如下代码:
//直接在文档的最后面加上以下环境变量(把用户名改成你的就行): 
//(注意:你在第一步更新tk和tcl时,版本如果是8.15.19或者其他版本,请替换以下中8.5.10为你的版本号)
export PATH=$PATH:/home/xxx/ns-allinone-2.35/bin:/home/xxx/ns-allinone-2.35/tcl8.5.10/unix:/home/xxx/ns-allinone-2.35/tk8.5.10/unix

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxx/ns-allinone-2.35/otcl-1.14:/home/xxx/ns-allinone-2.35/lib

export TCL_LIBRARY=$TCL_LIBRARY:/home/xxx/ns-allinone-2.35/tcl8.5.10/library
//注意两个环境变量路径之间要用冒号:隔开
编译环境变量,运行:
source ~/.bashrc

4 验证ns是否安装成功

关闭终端,重启终端,输入ns,出现%,说明ns2安装成功
注意:环境变量配错的话,会提示“程序“ns”尚未安装。 此时请勿使用以下命令安装: sudo apt-get install ns2 如果出错的话,检查步骤3的环境有没有配错,没错的话就再次执行source ~/.bashrc, 再次执行ns,这时候应该就完美的出现了%,证明ns2应经安装好了。 -

5 测试一个例子example

先重新打开一个新的终端:
cd ns-allinone-2.35/ns-2.35/tcl/ex
ns example.tcl
如果出现了数据,证明ns2运行正常。再输入
ns simple.tcl
倘若弹出动画演示框,则证明ns完全安装正确,下面的问题也不需要看了,至此结束。
--------------我是分割线----------- 但是,我的出错了!

6 Nam 无法启动

进入nam目录:cd ns-allinone-2.35/nam-1.15 进入后 ./configure
如果提示找不到tcl路径,可以用./configure –with-tcl-ver=8.5 然后 make

最后 make install

命令行输入nam弹出nam console说明nam安装成功。

注意:如果通过“sudo apt-get install nam”安装的nam,执行nam命令会报异常
“段错误,核心文件已转储”

遇到该问题的网友可以“sudo apt-get remove –purge nam”卸载nam及其配置后按Step6安装。

解决后再进入 ns-allinone-2.35/ns-2.35/tcl/ex,运行

ns simple.tcl
弹出动画演示就说明大功告成!大概在第5秒的会有ACK的回应。
相关文章
最新文章
热点推荐