安装环境:ubuntu 16.04
步骤:(转明日韭菜-Ubuntu16.04下安装ns2.35)
step1:更新系统
$ sudo apt-get update #更新源列表
$ sudo apt-get upgrade #更新已安装的包
$ sudo apt-get dist-upgrade #更新软件,升级系统
step2:安装三个依赖包
$ sudo apt-get install build-essential
#安装build-essential软件包,编译C/C++所需要的所有软件包都会被安装
$ sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev
#安装Tcl/Tk跨平台语言
$ sudo apt-get install libxmu-dev libxmu-headers
#安装nam
step3:下载安装包
官网下载地址:https://www.isi.edu/nsnam/ns/
links to help getting started → getting ns and avoiding problems → download and build ns → getting everything at once
下载ns-allinone-2.35包
$ tar -xvzf ns-allinone-2.35.tar.gz
$ cd ns-allinone-2.35
$ sudo ./install #安装
安装报错:
In file included from linkstate/ls.cc:67:0: linkstate/ls.h: In instantiation of ‘void LsMap::eraseAll() [with Key = int; T = LsIdSeq]’:
linkstate/ls.cc:396:28: required from here linkstate/ls.h:137:20: error: ‘erase’ was not declared in this scope, and no declarationswere found by argument-dependent lookup at the point of instantiation [-fpermissive]
linkstate/ls.h:137:20: note: declarations in dependent base ‘std::map, std::allocator > >’ are not found by unqualified lookup linkstate/ls.h:137:20: note: use ‘this->erase’ instead
make: *** [linkstate/ls.o] Error 1
Ns make failed!
解决办法:
$ cd ./ns-2.35/linkstate
$ gedit ls.h
137行:void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
改为:void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
保存重新安装:sudo ./install
step4:配置环境变量
$ cd /home/用户名
$ gedit ~/.bashrc
文件末尾添加以下环境变量
export NS_HOME=/安装位置/ns-allinone-2.35
export PATH=$PATH:$NS_HOME/bin:$NS_HOME/tcl8.5.10/unix:$NS_HOME/tk8.5.10/unix
export LD_LIBRARY_PATH=$NS_HOME/otcl-1.14:$NS_HOME/lib
export TCL_LIBRARY=$NS_HOME/tcl8.5.10/library
step5:验证ns2是否安装成功
关闭终端→重启终端→输入ns
出现"%",说明安装成功
若没有安装成功,会提示使用以下命令安装
sudo apt-get install ns2
不要执行,继续改上述步骤,查找错误
step6:验证nam是否安装成功
重新打开一个终端窗口
$ cd ns-allinone-2.35/ns-2.35/tcl/ex/
$ ns simple.tcl
若弹出动画演示框说明成功。
若没有安装成功,执行以下命令:
$ cd ns-allinone-2.35/nam-1.15 #进入nam目录
$ ./configure --with-tcl-ver=8.5 #重新配置
$ make #重新编译源码
$ make install #重新安装