Step1: 更新系统
sudo apt-get update #更新源列表
sudo apt-get upgrade #更新已经安装的包
sudo apt-get dist-upgrade #更新软件,升级系统
Step2:安装ns2需要的几个包
sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #for tcl and tk
sudo apt-get install libxmu-dev libxmu-headers #for nam
Step3:下载安装包,并复制到需要安装的目录
官网下载地址:http://www.isi.edu/nsnam/ns/,这里下载allinone
tar xvfz ns-allinone-2.35.tar.gz
cd ns-allinone-2.35
sudo ./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()); }
保存后 sudo ./install #重新安装顺利完成
Step4:配置环境变量
修改当前用户环境变量(1、 对应的文件为'/home/用户名'中的.bashrc,并非'/ns-allinone-2.35'底下的空白.bashrc。2、或者重新打开一个端口,输入:sudo gedit .bashrc。这两种方法不知道有啥区别,亲测可行)。
gedit ~/.bashrc
在文件末尾添加
# add path for ns2
export PATH="$PATH:/home/安装文件夹名/ns-allinone-2.35/bin:/home/安装文件夹名/ns-allinone-2.35/tcl8.5.10/unix:/home/安装文件夹名/ns-allinone-2.35/tk8.5.10/unix"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/安装文件夹名/ns-allinone-2.35/otcl-1.14:/home/安装文件夹名/ns-allinone-2.35/lib"
export TCL_LIBRARY="$TCL_LIBRARY:/home/安装文件夹名/ns-allinone-2.35/tcl8.5.10/library"
Step5:验证ns2安装
关闭终端,重启终端,输入ns,出现%,说明ns2安装成功
注意:环境变量配错的话,会提示
“程序“ns”尚未安装。 您可以使用以下命令安装:
sudo apt-get install ns2”
请勿通过该命令安装,还是回到Step4修改环境变量吧!
Step6:安装nam
进入nam目录:cd ns-allinone-2.35/nam-1.15
进入后sudo ./configure,然后sudo make
最后sudo make install
命令行输入nam弹出nam console说明nam安装成功。
注意:如果通过“sudo apt-get install nam”安装的nam,执行nam命令会报异常
“段错误,核心文件已转储”
遇到该问题的网友可以“sudo apt-get remove --purge nam”卸载nam及其配置后按Step6安装。
Step7:测试simple.tcl
cd ns-allinone-2.35/ns-2.35/tcl/ex/
ns simple.tcl
出现如下图所示,代表成功安装!恭喜!
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TMwAzNzkzMyIDOwQDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)