摘要
NS2的安装过程可能涉及到修改源文件代码,因此在本文中说说NS2安装的注意事项。
1. 下载安装包
下载NS2安装包,建议下载allinone版本,安装过程可能不会太费事,下载链接是http://ftp.isi.edu/nsnam/dist/。这里我的OS是ubuntu16.04,NS2安装包是ns-2.35-allinone.tar.gz
2. 解压
解压到相应的目录。这里我解压到/opt/ns2
3. 安装
进入解压后的目录,输入命令sudo ./install安装。
4. 终端显示如下错误,错误码可能不一样,但是问题基本上linkstate/ls.h文件编译错误的问题。
In file included from linkstate/ls.cc:64:0:
linkstate/ls.h: In instantiation of ‘void LsMap::eraseAll() [with Key = int; T = LsIdSeq]’:
linkstate/ls.cc:392:24: required from here
linkstate/ls.h:136:18: error: ‘erase’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
linkstate/ls.h:136:18: note: declarations in dependent base ‘std::map, std::allocator > >’ are not found by unqualified lookup
linkstate/ls.h:136:18: note: use ‘this->erase’ instead
make: *** [linkstate/ls.o] Error 1
Ns make failed!
5. 解决方法
a) 进入目录
进入linkstate目录。这里我的目录是/opt/ns2/ns-allinone-2.35/ns-2.35.linkstate
b) 修改文件
修改文件ls.h中的第136行18列的eraseAll()函数。没修改前,源代码如下所示,
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
在erase前面增加this->,修改之后,修改后的代码如下图所示,
void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
c) 安装
再一次输入命令 sudo ./install,进行安装。
6. 安装之后出现下面提示的问题
7. 解决方法
a) 进入目录
~$ cd ~
~$ sudo vim .bashrc
b) 修改文件
在文件后面添加lib和library的路径,这里,我的路径如下,
c) 验证
~$ cd ns-2.35
~$ ./validate
8. 安装成功之后,在终端输入命令ns,但是存在NS2无法启动的问题
9. 解决方法
a) 进入目录
~$ cd ~
~$ sudo vim .bashrc
b) 修改文件
在文件后面添加bin,tcl,tk的路径,这里,我的路径如下,
10. 成功安装
新建一个终端,输入ns,出现%,成功安装NS2。
~$ ns
11. 辅助插件安装
NS2使用过程中,可能需要一些作图工具,这里推荐安装一些辅助的插件
~$ sudo apt-get install gawk
~$ sudo apt-get install gnuplot