无线网络仿真软件NS2安装

时间:2024-03-09 09:23:15

1. 在操作系统Windows中安装虚拟机VMware。

2. 在虚拟机中安装Linux内核的操作系统Ubuntu。

3. 在操作系统Ubuntu中安装仿真软件NS2。

更新系统

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

安装ns2需要的几个包

sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #for tcland tk
sudo apt-get install libxmu-dev libxmu-headers #for nam

下载安装包,并复制到需要安装的目录
官网这里下载allinone

tar xvfz ns-allinone-2.35.tar.gz
cd ns-allinone-2.35
sudo ./install #进行安装

第一次安装报错:

解决方法:

sudo apt-get install gcc-5 gcc-5-multilib g++-5 g++-5-multilib
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
sudo update-alternatives --config gcc
选择gcc-5
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 50
sudo update-alternatives --config g++
选择g++-5

第二次安装报错:
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
即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 #重新安装顺利完成

解压安装了ns-allinone-2.35压缩包成功后的结果如下。


配置环境变量
修改当前用户环境变量(对应的文件为’/home/用户名’中的.bashrc,并非’/ns-allinone-2.35’底下的空白.bashrc)
输入命令:gedit ~/.bashrc
在文件末尾添加

/# add path for ns2
exportPATH="$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"
exportLD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/用户目录/安装文件夹名/ns-allinone-2.35/otcl-1.14:/home/用户目录/安装文件夹名/ns-allinone-2.35/lib"
exportTCL_LIBRARY="$TCL_LIBRARY:/home/用户目录/安装文件夹名/ns-allinone-2.35/tcl8.5.10/library"

验证ns2安装
关闭终端,重启终端,输入ns,出现%,说明ns2安装成功,如下图:

按CTRL+C停止
注意:环境变量配错的话,会提示程序“ns”尚未安装。解决方法之一是使用以下命令安装:
sudo apt-get install ns2
但建议请勿通过上述命令安装,最好是回到第4步修改正确的环境变量。因为apt-get是通过源下载安装,与解压安装包不一致。即使apt-get安装后也能通过ns使用,但其实使用的不是解压安装包里的ns2,而是源下载的ns2,而之前的配置是针对解压安装包里的ns2,因此后续使用会出现很多报错。当然这是小白我的看法和建议,如果对Linux内核操作熟练的大哥们应该能忽略。

安装nam
进入nam目录:cd ns-allinone-2.35/nam-1.15
进入后sudo ./configure,然后sudo make
注意,此处会出错
提示为installation of tcl seems incomplete or can’t be found automatically,如下图:

解决方法:
sudo ./configure--with-tcl=/home/用户目录/文件存放目录/ns-allinone-2.35/tcl8.5.10 --with-tcl-ver=8.5.10 --with-tk=/home/用户目录/文件存放目录/ns-allinone-2.35/tk8.5.10 --with-tk-ver=8.5.10
最后sudo make install
命令行输入nam弹出nam console说明nam安装成功。


4. 测试example.tcl和simple.tcl。

终端输入命令:cd ns-allinone-2.35/ns-2.35/tcl/ex/
ns example.tcl,结果显示如下(如果出现了数据,证明ns2运行正常):

接着输入:ns simple.tcl,结果如下,说明tcl正确安装。如果没有成功安装,有可能是环境变量没有修改好,比如路径不对或者符号不是英文的。显示下图表示全部安装成功!