Ubuntu系统下NS-3安装与工具配置

1.NS3介绍

官网:https://www.nsnam.org/

引用官网的介绍:

ns-3是用于因特网系统的离散事件网络模拟器,主要用于研究和教育用途。ns-3是免费软件,根据GNU GPLv2许可证授权,可公开用于研究,开发和使用。

NS-3是一个离散的事件驱动的网络系统模拟器,旨在为科研和教学服务.NS-3是免费的软件,使用GNU GPLv2证书,对研究,开发,和使用开放。目前(2016年10月24日)的最新版本是NS-3.27。稳定版本是NS-3.26。几乎每三到四个月就会更新一个版本.ns3之前有NS2。但是NS2与NS3区别很大。强烈建议使用NS3。另外,ns3.26版本是支持C ++ 11。所以建议使用最新的版本。

官方提供了说明文档,教程文档,模块库文档,API文档等。这些文档很重要。

通过可以网址https://www.nsnam.org/ns-3-26/documentation/电子杂志。

Ubuntu系统下NS-3安装与工具配置_第1张图片

这里写图片描述

官网提供了PDF格式和HTML格式。下载PDF格式更好,本地查看,不受网络限制。

需要说明的是,上面的文档都是英文的。如果英文好,直接阅读这些文档,就可以入门NS3了。

但是肯定有英文不好的同学喽,怎么办呢?还是有办法的。有一本书,名字是“NS-3网络模拟器基础及应用”,走淘宝就可以了。这本书就是上面的官方文档的翻译版本。如果英文好的话,别花冤枉钱了。

2.安装

根据NS3-教程文档的说明,来进行安装。网上也有博客说明安装步骤。大家可以参考。需要说明的是,NS3安装以及配置都是ubuntu的下进行的。

对于视窗系统用户来说,最好使用双系统,因为在视窗下使用虚拟机来做的话,太慢了。个人建议用双系统。如果你自己使用的就是Linux的的话,那就更好了。

在安装NS3前需要安装一些依赖库,否则,安装NS3会出错。

sudo apt-get install gcc g++ Python
sudo apt-get install mercurial
sudo apt-get install bzr
sudo apt-get install gdb valgrind
sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl
sudo apt-get install flex bison
sudo apt-get install g++-3.4 gcc-3.4
sudo apt-get install tcpdump
sudo apt-get install sqlite sqlite3 libsqlite3-dev
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
sudo apt-get install vtun lxc
sudo apt-get install uncrustify
sudo apt-get install doxygen graphviz imagemagick
sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended
sudo apt-get install texinfo dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended
sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev
sudo apt-get install libboost-signal-dev libboost-filesystem-dev

主要有上面这些。安装之后,再安装教程文档中的步骤进行,下载NS3,编译。

详细过程请看教程文档。

我在安装的时候遇到了错误。其中大部分错误应该是没有安装依赖的库造成的。如果在安装过程中出了错误,请看看终端上面显示的错误,是不是依赖的库没有安装?如果是因为有些库没有安装的话,可以先安装提示的库,然后在向下进行安装。

如果上面依赖的库安装完成之后,按照教程文档中的下载过程下载NS3便可,就不多说了,下载过程简单要看各位的网速了。
下载完成之后,目录截图如下:

 

Ubuntu系统下NS-3安装与工具配置_第2张图片

这里写图片描述

完成之后,就是要编译这个工程了。
其实我们下载的NS3文件没有IDE来打开看是肯定不行的,稍后会说明如何在蚀中打开我们下载的NS3。

首先编译并运行一下NS3。看看是否安装成功。此时的NS3文件总大小大约150M左右。我使用的是WAF进行配置和编译。这里完全不用看教程文档了。里面说的太啰嗦了。

打开终端,进行到下载的NS3目录下,(是在上面的目录下打开命令行终端),输入以下运行命令:

./waf configure --build-profile=debug --enable-examples --enable-tests

这一行命令是为了配置NS3。

命令中的点号代表当前目录,当前命令下的WAF文件,WAF文件是一个蟒蛇。是NS3自带的。

通过上面的命令,使用当面目录下的WAF文件配置NS3,并使得编译版本为调试模式,同时使得实例代码和测试代码可用。

终端上输出日志如下:

Setting top to                           : .
Setting out to                           : build
Checking for 'gcc' (c compiler)          : /usr/bin/gcc
Checking for cc version                  : 4.2.1
Checking for 'g++' (c++ compiler)        : /usr/bin/g++
Checking boost includes                  : 1_46_1
Checking boost libs                      : ok
Checking for boost linkage               : ok
Checking for click location              : not found
Checking for program pkg-config          : /sw/bin/pkg-config
Checking for 'gtk+-2.0' >= 2.12          : yes
Checking for 'libxml-2.0' >= 2.7         : yes
Checking for type uint128_t              : not found
Checking for type __uint128_t            : yes
Checking high precision implementation   : 128-bit integer (default)
Checking for header stdint.h             : yes
Checking for header inttypes.h           : yes
Checking for header sys/inttypes.h       : not found
Checking for header sys/types.h          : yes
Checking for header sys/stat.h           : yes
Checking for header dirent.h             : yes
Checking for header stdlib.h             : yes
Checking for header signal.h             : yes
Checking for header pthread.h            : yes
Checking for header stdint.h             : yes
Checking for header inttypes.h           : yes
Checking for header sys/inttypes.h       : not found
Checking for library rt                  : not found
Checking for header netpacket/packet.h   : not found
Checking for header sys/ioctl.h          : yes
Checking for header net/if.h             : not found
Checking for header net/ethernet.h       : yes
Checking for header linux/if_tun.h       : not found
Checking for header netpacket/packet.h   : not found
Checking for NSC location                : not found
Checking for 'mpic++'                    : yes
Checking for 'sqlite3'                   : yes
Checking for header linux/if_tun.h       : not found
Checking for program sudo                : /usr/bin/sudo
Checking for program valgrind            : /sw/bin/valgrind
Checking for 'gsl'                       : yes
Checking for compilation flag -Wno-error=deprecated-d... support : ok
Checking for compilation flag -Wno-error=deprecated-d... support : ok
Checking for compilation flag -fstrict-aliasing... support       : ok
Checking for compilation flag -fstrict-aliasing... support       : ok
Checking for compilation flag -Wstrict-aliasing... support       : ok
Checking for compilation flag -Wstrict-aliasing... support       : ok
Checking for program doxygen                                     : /usr/local/bin/doxygen
---- Summary of optional NS-3 features:
Build profile                 : debug
BRITE Integration             : not enabled (BRITE not enabled (see option --with-brite))
Build directory               : build
Build examples                : enabled
Build tests                   : enabled
Emulated Net Device           : enabled (netpacket/packet.h include not detected)
Emulation FdNetDevice         : not enabled (needs netpacket/packet.h)
File descriptor NetDevice     : enabled
GNU Scientific Library (GSL)  : enabled
GtkConfigStore                : enabled
MPI Support                   : enabled
NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration     : not enabled (Required boost libraries not found, missing: system, signals, filesystem)
Network Simulation Cradle     : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
PyViz visualizer              : enabled
Python Bindings               : enabled
Real Time Simulator           : enabled (librt is not available)
SQlite stats data output      : enabled
Tap Bridge                    : not enabled (linux/if_tun.h include not detected)
Tap FdNetDevice               : not enabled (needs linux/if_tun.h)
Threading Primitives          : enabled
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
XmlIo                         : enabled
'configure' finished successfully (1.944s)    

上面命令完成之后,编译NS3,在终端输入命令:

./waf build

该命令会编译整个NS3编译完成之后,在终端会显示如下日志信息:

Ubuntu系统下NS-3安装与工具配置_第3张图片

这里写图片描述

编译完成之后,整个NS3文件大小大约在1.2G左右此后,在此输入构建命令,终端输出信息如下:

Ubuntu系统下NS-3安装与工具配置_第4张图片

这里写图片描述

其中,根据终端中的提示信息,还有四个模块没有编译。这是因为这四个模块并不是必须的。你可以在使用到的时候再添加也不晚。我在做的时候,没有用到过。所以我一直没有添加。

下面运行NS3,测试一下,在终端输入命令:

./test.py -c core

这一行命令会测试整个NS3的代码。在终端的日志信息会输出每一个测试用例。这个过程会比较久。

下面运行NS3 Hello代码,在终端输入命令:

./waf --run hello-simulator

上面代码完成之后,在终端会输出信息:

Ubuntu系统下NS-3安装与工具配置_第5张图片

这里写图片描述

至此就完成了NS3的安装。

3.eclipse中配置NS3

下面说说如何在日食中配置NS3。

https://www.nsnam.org/wiki/HOWTO_configure_Eclipse_with_ns-3

这个网址是官方给出的如何在蚀中配置NS3的过程。但是这个过程复杂难懂。本来挺简单的事情,我在看这个文章的时候觉得写得太复杂。

下面我一方面截图一方面文字说明,一步步来。

首先,我们进入刚刚下载的NS3目录下,在终端打开,输入命令行:

./waf clean

这样做可清除NS3项目的编译。从上面我们知道,编译之后NS3工程有1.2G左右,太大了。但是运行此命令之后,工程要小很多。一会儿再配置蚀中,需要导入该NS3文件。

3.1安装eclipse

可从
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neon2
这个网址下载对应的eclipse c ++版本。具体安装过程就不多说了。

3.2安装mercurial eclipse插件

百度一下google一下就可以了。

https://www.nsnam.org/wiki/HOWTO_configure_Eclipse_with_ns-3
这个网址里面在说明如何安装这个插件的时候说的不清楚。不用看。记得安装善变的插件就行。

我给一个参考网址:
http:
//wireframesketcher.com/support/install/installing-mercurial-plugin.html可以参考这个进行安装。

3.3新建c ++工程

安装成功之后,随便打开一个命令行终端,输入蚀命令即可启动蚀。

这里写图片描述

打开之后,File-> new C ++ project

Ubuntu系统下NS-3安装与工具配置_第6张图片

这里写图片描述

输入项目工程名字,选择空工程和Linux GCC,next-> Finish即可。

新建工程目录如下:

 

Ubuntu系统下NS-3安装与工具配置_第7张图片

这里写图片描述

然后在工程上右键鼠标,选择导入...按钮

Ubuntu系统下NS-3安装与工具配置_第8张图片

这里写图片描述

选择文件系统,然后接下来

Ubuntu系统下NS-3安装与工具配置_第9张图片

这里写图片描述

点击浏览按钮,选择我们下载的NS3目录,全选我这里是把ns326目录导入ns327工程然后点击完成按钮。
导入成功之后,工程结构图如下,我已ns326项目实例:

Ubuntu系统下NS-3安装与工具配置_第10张图片

这里写图片描述

3.4配置waf Build

工程右键鼠标,选择属性。

Ubuntu系统下NS-3安装与工具配置_第11张图片

这里写图片描述

选择c / c ++ build-> builder settings 
填写其中的build命令和构建目录。

其中的ns326必须替换成你自己新建的工程的名字。完成之后,选择行为。

Ubuntu系统下NS-3安装与工具配置_第12张图片

这里写图片描述

严格按照图中的选择。然后点击OK。

3.5配置配置外部流道

点击eclipse中的Run-> External Tools-> External Tools Configuration

Ubuntu系统下NS-3安装与工具配置_第13张图片

这里写图片描述

在最左边计划上面有一排按钮,第一个按钮新建配置,点击,会出现图中所示的右边的三个空白行要填写,填写内容如下:

Ubuntu系统下NS-3安装与工具配置_第14张图片

这里写图片描述

姓名随机自己起名字,不重要,自己看得懂就行。
下面的三个位置,工作目录,参数按照上面的填写。
其中上面出现ns3字样的地​​方,需要换成你自己新建的工程的名字。其他的内容按照上面的字符串填写。

位置指定的是waf文件的位置。
工作目录指的是工作目录
.Arguments指定的是参数,字符串参数,基本不用,按照图中书写就行。

完成之后,点击运行按钮,会弹出一个框:

Ubuntu系统下NS-3安装与工具配置_第15张图片

这里写图片描述

这里需要输入一个运行代码文件名,这里输入hello-simulator。
为什么输入这个名字呢?
因为我们上面配置了工作目录,工作目录,这里指定的目录下有一个hello-simulator.cc文件,所以可以运行这个代码。

点击OK按钮,在日食控制台输出信息如下:

Ubuntu系统下NS-3安装与工具配置_第16张图片

这里写图片描述

3.6配置配置Runner

点击eclipse界面上的Run - > Run Configuration

Ubuntu系统下NS-3安装与工具配置_第17张图片

这里写图片描述

左边有一个C / C ++应用。上面的按钮第一个新建一个,就会出现上面图中的右边的界面,主要选项卡下项目为你自己新建的工程文件名。

第二个C / C ++应用为你自己的工程中可以运行的文件,这个工程配置的编译之后的代码都放在建立目录下,这个建目录在你自己的工程目录下,点击浏览按钮,选择可执行文件。然后,选择环境选项卡

Ubuntu系统下NS-3安装与工具配置_第18张图片

这里写图片描述

点击新建...新建一个变量LD_LIBRARY_PATHValue值就是上面的图中所示。记得把NS3换成你自己的工程的名字。

还有最下面有两个选择,勾选第一个追加的环境,原生环境。然后点击RUN按钮就会运行上面的工作目录中配置的对应的编译代码文件,在控制台就会有输出信息。

3.7其他提示

打开任意命令行终端,输入

pkg-config --cflags libxml-2.0

回车

这里写图片描述

然后右键鼠标,属性 - > C / C ++一般 - >路径和符号 - >语言下的GNU C ++点击添加按钮,

Ubuntu系统下NS-3安装与工具配置_第19张图片

这里写图片描述

把命令行输出的在/ usr /包括/ libxml2的复制到图中所有位置。然后重新编译整个工程。

这一步貌似可以不要。我后来新建的工程,没有用这个,也照样运行的良好。可省略。

至此,完成了全部的配置。

4.编译和运行

编译

关于编译NS3工程,有两种方式

一种是命令行模式,在工程目录下,直接输入命令

./waf build

即可编译整个项目

Ubuntu系统下NS-3安装与工具配置_第20张图片

这里写图片描述

第二种是使用eclipse->运行 - >外部工具 - >外部工具配置

Ubuntu系统下NS-3安装与工具配置_第21张图片

这里写图片描述

点击右下角的RUN按钮,编译的日志输出会在蚀的控制台输出。

对于这两种方式,我建议使用命令行终端。

因为蚀界面上日志输出,在工程大的情况下,非常卡,耗时耗力,在终端上要好很多。

运行

同样有两种方式。

第一种使用命令行:

Ubuntu系统下NS-3安装与工具配置_第22张图片

这里写图片描述

这种方式可以添加运行参数,其中的HELLO-模拟器是默认工作目录下的代码。如果是想要运行其他目录下的代码,比如示例目录下的代码,这需要把喂模拟器替换成/示例/ XXX / XXX就可以运行了。

第二种方式eclipse界面,运行 - >运行配置选项

Ubuntu系统下NS-3安装与工具配置_第23张图片

这里写图片描述

想要运行什么代码,只需要选择c / c ++ application选项就可以了。

对于以上两种运行方式,个人建议使用蚀界面。简单方便。命令行要输入很多字符,很容易出错。

5.安装python插件

NS3中可以使用Python的开发,不过我没有用过。如果想用的话,可以在日食中安装Python的插件。即使不用蟒蛇开发,安装Python的插件,可以对数据进行处理,也是不错的选择。

点击eclipse界面中的帮助 - >安装新软件

Ubuntu系统下NS-3安装与工具配置_第24张图片

这里写图片描述

选择第一个的PyDev即可。第二个不用选。一路接下来就可以了。

6.后记

上面的过程,大家看着可能感觉很麻烦。确实如此,整个的过程可能花一天的时间才能搞好,并且还是顺利的情况下。如果出现奇奇怪怪的问题,可能要很久时间才能搞好。

不过,其实完成上面的过程一次之后,下面如果在配置就很容易了。

编译就是,/ waf build运行的话直接使用eclipse界面完成。

如果想再新建工程,直接新建C ++工程,然后导入原来的NS3工程就可以。需要做的就是配置CONFIGRATION。

如果想使用NS3最新版本,直接下载NS3最新版本之后,新建C ++工程,然后再导入下载的最新版本文件就可以了,然后再配置的配置就可以了。

最后,就可以苦逼的玩耍了〜


NS3常用命令汇总:

./waf clean

./waf configure --build-profile=debug --enable-sudo --enable-examples --enable-tests./test.py -c core

./waf --run hello-simulator

运行程序命令行:

./waf --run "examples/wireless/wifi-simple-learn-tcptest

Eclipse的快速操作组合键

ctrl + shift + r:打开资源
ctrl + o:快速大纲
ctrl + e:快速切换编辑器
alt + shift + r:重命名
shift + enter:在当前行之下,添加空白行
ctrl + shift + enter:在当前行之上,添加空白行
alt +方向键:将当前行内容上下移动
Ctrl + T:显示一个类的继承关系
Ctrl + shift + X:转换成大写字母
Ctrl + shift + Y:转换成小写字母


sudo su root权限

磁盘挂载:

sudo ntfsfix /dev/sda7

双系统情况下,Ubuntu的打开文件系统时候,有时候不能访问的Windows系统文件,会出现磁盘挂载出现问题的提示,可以使用该命令修复,之后就可以打开窗口系统文件。

不过,要注意sda7其中的7不能照抄。按照自己的ubuntu系统标记改成对应的数字。


没有声音:

登录ubuntu系统是没有声音的,反正我的是没有,开启方法:
root登录后打开终端输入:

pulseaudio --start --log-target=syslogsudo sh -c echo “pulseaudio –start –log-target=syslog” >> /etc/environment

只需运行这一次,以后每次启动音量调节都可以使用。

如果每次启动都可以这样:/etc/rc.local中加入pulseaudio --start --log-target = syslog语句。


gnuplot的使用命令:

进入.PLT文件所在的目录,打开终端,输入命令:

gnuplot xxxx.plt

回车即可生成PNG或者EPS图片文件。即可查看效果图。


netanim使用命令:

进入netanim所在的目录下,命令行输入:

./NetAnim

回车之后进入NetAnim界面,打开XML文件即可。


Wireshark的使用命令:

进入Wireshark的-2.0.1所在的目录下,命令行输入:

sudo wireshark

如果有异常,尝试输入:

sudo ldconfigwireshark

查看和杀死进程:

ps -ekill pid

如果还杀不死,使用

kill -9 pid

 

                                            

扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!

例如:想获得Python入门至精通学习资料,请回复关键词Python即可。

 

你可能感兴趣的:(嵌入式,嵌入式开发技术)