包含 官方allinone、安装依赖、编译的jio本:
https://pan.baidu.com/s/18u66zLv4Z_BU75GxFgnnFw
官网:
https://www.nsnam.org/docs/release/3.30/tutorial/html/getting-started.html
mkdir workspace
cd workspace
git clone https://gitlab.com/nsnam/ns-3-allinone.git
cd ns-3-allinone
下下来以后目录结构应该是这样的:
python download.py
# 其实用的是python3,没有的需要安装
# 下载指定版本可加参数:python download.py -n ns-3.30
cd ~/workspace
git clone https://gitlab.com/nsnam/bake.git
目录结构:
目前有一些常用的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,可以看到:
(qt 那个我补到上面了,sudo apt install qt5-default)
下完以后目录结构:
cd source
ls
./bake.py build
cd ~/workspace/bake/source/ns-3.30
./waf clean
# 启用 optimized模式,enable示例和测试
./waf configure --build-profile=optimized --enable-examples --enable-tests
默认情况下有些功能是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 --command-template="%s "
#或者
./waf --run ' --arg1=value1 --arg2=value2 ...'
#例如
./waf --run 'example1 --arg1=111 --arg2=222'