18 - NS-3搭建 - 博一

1、Set up NS-3

包含 官方allinone、安装依赖、编译的jio本:
https://pan.baidu.com/s/18u66zLv4Z_BU75GxFgnnFw
官网:
https://www.nsnam.org/docs/release/3.30/tutorial/html/getting-started.html

Prepare

  • 1.1 下载安装jio本
    官网提供了多种下载源码及编译方式,我一开始用了git上的那个allinone方式的:(但后来用了bake,1.3 节)
mkdir workspace
cd workspace
git clone https://gitlab.com/nsnam/ns-3-allinone.git
cd ns-3-allinone

下下来以后目录结构应该是这样的:
1

  • 1.2 下载源码
python download.py
# 其实用的是python3,没有的需要安装
# 下载指定版本可加参数:python download.py -n ns-3.30
  • 1.3 下载和配置bake
    通过bake可以方便地进行一些附加组件的安装:
cd ~/workspace
git clone https://gitlab.com/nsnam/bake.git

目录结构:
2

目前有一些常用的ns-3分支,可以通过配置bake来进行安装:

ns-3.30:与发行版; 它将下载与发行版tarball类似的组件。
ns-3-dev:开发分支
ns-allinone-3.30:包括其他可选功能,例如ns-3的Openflow和网络仿真框架
ns-3-allinone:与allinone相似,开发分支。

配置bake:

export BAKE_HOME=`pwd`
export PATH=$PATH:$BAKE_HOME:$BAKE_HOME/build/bin
export PYTHONPATH=$PYTHONPATH:$BAKE_HOME:$BAKE_HOME/build/lib
# ↓选择版本
./bake.py configure -e ns-3.30
# ↓检查一些基础依赖
./bake.py check

这些依赖包括:

Python - OK
GNU C++ compiler - is missing # sudo apt install build-essential
Mercurial - is missing # sudo apt install python3-pip # sudo pip3 install mercurial
Git - OK
Tar tool - OK
Unzip tool - OK
Make - is missing
cMake - is missing # sudo apt install cmake
patch tool - OK

新系统, missing的手动装一下
在↓之前,还有一大堆依赖要装,emmm为什么不写进jio本里呢…

./bake.py download

依赖:

sudo  apt-get install gcc g++ python
sudo  apt-get install gcc g++ python python-dev
sudo  apt-get install mercurial python-setuptools git
sudo  apt-get install qt5-default
sudo  apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev ipython
sudo  apt-get install gir1.2-goocanvas-2.0 python-gi python-gi-cairo python-pygraphviz python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython ipython3  
sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
sudo  apt-get install autoconf cvs bzr unrar
sudo apt-get install gdb valgrind 
sudo apt-get install uncrustify
sudo  apt-get install doxygen graphviz imagemagick
sudo  apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk
sudo  apt-get install python-sphinx dia 
sudo  apt-get install gsl-bin libgsl2 libgsl-dev
sudo  apt-get install flex bison libfl-dev
sudo apt-get install tcpdump
sudo apt-get install sqlite sqlite3 libsqlite3-dev
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install cmake libc6-dev libc6-dev-i386 libclang-dev llvm-dev automake
sudo apt-get install python-pip
pip install cxxfilt
sudo  apt-get install libgtk2.0-0 libgtk2.0-dev
sudo  apt-get install vtun lxc
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
sudo apt install qt5-default # netanim依赖qt

然后bake.py download,可以看到:
3
(qt 那个我补到上面了,sudo apt install qt5-default)

下完以后目录结构:
4

cd source
ls

6

  • 1.4 使用bake编译ns-3(之后用waf配置)
./bake.py build

5
基本编译就完成了。

  • 1.5 或者用 waf配置、编译ns-3
cd ~/workspace/bake/source/ns-3.30
./waf clean
# 启用 optimized模式,enable示例和测试
./waf configure --build-profile=optimized --enable-examples --enable-tests

7
默认情况下有些功能是disable的。
如果要换回到debug模式同时保留examples和tests:

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

在配置好waf以后,就可以通过waf来编译ns-3,就一句命令:

./waf

查看当前waf配置:

 ./waf --check-profile

1.4节中用build.py的方式也可以实现部分waf的操作,但有很多命令式不支持的。waf更方便一些。如果一定要用build.py, 可以通过在所有参数前加一个–,build.py就会把之后的参数都传递给waf(其实还是waf)

测试ns-3:

./test.py

利用waf来运行我们的程序,比如:

./waf --run hello-simulator

将命令行参数提供给ns-3程序:

./waf --run <ns3-program> --command-template="%s <args>"
#或者
./waf --run '<ns3-program> --arg1=value1 --arg2=value2 ...'
#例如
./waf --run 'example1 --arg1=111 --arg2=222'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值