这里写自定义目录标题
提示
NS2只支持C+±4.8到5.4版本,关于如何安装低版本C++看上一篇
第一步:安装VMware,在VMware上安装Ubuntu20.04
第二步:下载NS2依赖的软件包
sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #用来做图形用户界面(GUI)的工具,与tcl命令结合可以创建和操作GUI的窗口组件
sudo apt-get install libxmu-dev libxmu-headers #nam的依赖
第三步:下载NS2.35压缩包
官网链接:ns-2.35下载
第四步:将压缩包拉到虚拟机中/解压
分别执行下面命令:
sudo tar -zxvf ~/ns2/ns-allinone-2.35.tar.gz(目标解压文件) -C (指定解压目录)/usr/local/
sudo chown -R lurker:lurker ~/ns2
chown:这个命令用来更改文件或目录的用户所有者和/或组。其名称来源于“change owner”。
-R:这个选项表示递归执行,即不仅更改指定目录本身的所有者,也更改目录内所有文件和子目录的所有者。
lurker:lurker:这里,lurker:lurker表示将用户所有者和组所有者都更改为“lurker”。冒号前的“lurker”是新的用户所有者,冒号后的“lurker”是新的组所有者。
~/ns2:这指定了要更改所有权的目标目录。这里的 ./ns2 表示当前目录中名为“ns2”的目录,~/ns为根目标下ns2目录
第五步:修改三处地方,否则安装时会报错
第一处:修改ns2解压目录下的/ns-2.35/linkstate/ls.h头文件,找到137行的代码:
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
修改成:
void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
第二处:修改NS2解压目录下/ns-2.35/mdart文件夹中的两个文件三处地方:
sudo nano ns-2.35/mdart/mdart_function.h
230行:hash -> hash_o
sudo vim ns-2.35/mdart/mdart_adp.cc
108行:hash -> hash_o
396行:hash -> hash_o
第三处:修改解压目录下/ns-2.35/bitmap/play.xbm文件
sudo nano ns-2.35/bitmap/play.xbm
在数组所有十六进制元素前加上(char),这里不能直接给数组类型加上unsigned,这样后面安装时会报参数类型错误。
第六步:安装
进入NS2解压目录,执行:
sudo ./install
第七步:配置环境变量:
sudo nano ~/.bashrc
在文件末尾加上(记得修改成自己的解压路径):
export NS_HOME=/home/lurker/ns2/ns-allinone-2.35
export TK_HOME=$NS_HOME/tk8.5.10
export TCl_HOME=$NS_HOME/tcl8.5.10
export PATH=$PATH:$NS_HOME/bin:$TK_HOME/unix:$TCL_HOME/unix
export LD_LIBRARY_PATH=$NS_HOME/otcl-1.14:$NS_HOME/lib
export TCL_LIBRARY=$TCL_HOME/library
重新加载资源,使新配置环境变量生效:
source ~/.bashrc
第八步:验证NS2安装
配置好环境变量后,任意找个位置,执行:
ns
若出现%说明ns安装成功
这里可以输入调用ns2的tcl代码,若想退出按CTRL + Z
第九步:安装ns2的可视化工具nam
nam提供可视化界面可动态展示网络的仿真过程。
ns2目录中就已经自带了nam跟其依赖的tk和tcl包,也不会有版本不兼容问题,直接用就行:
1.进入nam目录:
cd /home/lurker/ns2/ns-allinone-2.35/nam-1.15
2.直接安装会报错,也是.xbm文件数据类型的问题,只需把所有报错的.xbm文件里数组中所有十六进制值前加上(char)即可(不能直接加unsigned,我试过会报参数类型错误),由于要修改的地方有点多,我打包了一份放在网盘,覆盖nam-1.15下的bitmap目录即可,自取:百度网盘链接
3.最后执行命令(要指tk和tcl的版本号,ns2目录中已经打包好了)
sudo ./configure --with-tcl-ver=8.5.10 --with-tk-ver=8.5.10
4.更新nam
sudo make
sudo make install
若出现:
/usr/bin/install -c -m 755 nam /usr/local/bin
说明安装成功,直接运行即可:
sudo /usr/bin/install -c -m 755 nam /usr/local/bin
因为配置了环境变量,也可以直接输入:
nam
弹出该界面说明nam安装成功,之后编写tcl脚本时可以调用nam可视化界面来帮助理解网络仿真过程。