基于ns-3的DTN code安装教程

这是我第100次重装DTN了,再装就自杀。

系统:Ubuntu16.04LTS
ns3版本:3.22
装完系统直接装ns3,为防止版本支持问题,用的老版本系统+软件。

1 更改镜像源

习惯性装完系统先改成清华镜像源已备不测
(1)备份原来的源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

(2)打开源文件

sudo gedit /etc/apt/sources.list

(3)复制源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

(4)保存退出,并更新源

sudo apt-get update
sudo apt-get upgrade

2 下载NS3和DTN源码

NS3源码:https://www.nsnam.org/releases/ns-3-22/
DTN源码:http://www.netlab.tkk.fi/tutkimus/dtn/ns/
下载会比较慢,在等上一步upgrade的时候就可以开始下载了。

3 安装必备依赖项

依赖项全不全决定了编译结束后会缺失哪些模块,其他模块不知道有什么用,但是visualizer模块会用到而且可能会因为装的不全而缺失。
这步可以用管理员权限执行,更方便。

sudo su

以下内容一行一行复制进去,用上面更新的清华源下载,基本不会遇到问题。(也许可能还是会有一两个问题吧,不过问题不大应该)。

apt-get install gcc g++ python
apt-get install gcc g++ python python-dev
apt-get install python-setuptools git mercurial
apt-get install qt5-default mercurial
apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev ipython
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  
apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
apt-get install autoconf cvs bzr unrar
apt-get install gdb valgrind
apt-get install uncrustify
apt-get install doxygen graphviz imagemagick
apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk
apt-get install python-sphinx dia 
apt-get install gsl-bin libgsl-dev libgsl23 libgslcblas0
apt-get install tcpdump
apt-get install sqlite sqlite3 libsqlite3-dev
apt-get install libxml2 libxml2-dev
apt-get install cmake libc6-dev libc6-dev-i386 libclang-6.0-dev llvm-6.0-dev automake pip
pip install cxxfilt
apt-get install libgtk2.0-0 libgtk2.0-dev
apt-get install vtun lxc
apt-get install libboost-signals-dev libboost-filesystem-dev

4 编译NS3

退出sudo su模式。不退不影响安装,但是安装完成后会有权限问题,所有指令都需要sudo才可以运行,且文件夹图标上显示带锁(似乎也可以装完修改权限)。建议退出。
home目录下新建文件夹ns3,解压 ns-allinone-3.22.tar.bz2并将其内容全部提取至ns3文件夹中
在ns3文件夹下打开命令行,输入

./build.py --enable-examples --enable-tests
cd ns-3.22
./waf clean
./waf -d optimized --enable-examples --enable-tests configure
./waf clean
./waf -d debug --enable-examples --enable-tests configure
./waf
./test.py -c core

5 编译DTN

在ns3/ns-3.22/examples目录下新建文件夹DTN_SF_UDP,将下载的ns3dtn.tar.gz解压并全部提取至该文件夹下。
将该文件夹下刚解压出的regular-wifi-mac.h和mac-low.cc文件移动(剪切)到 …/…/src/wifi/model目录中,并替代当前文件。
在ns3/ns3.22目录下打开命令行,开始编译,输入:

./waf

编译结束后,我的模块编译情况如图:
在这里插入图片描述

6 测试一下

进入ns3/ns-3.22/examples/DTN_SF_UDP文件夹中,将里面的轨迹文件sf_downtown_nodes116_time3600.tcl移动(剪切)到他的上一级目录中。
打开DTN_SF_UDP文件夹,打开simulate.sh文件,将其中的tracedir和thisdir根据自己的计算机名字改成自己的目录。比如我的:

tracedir='/home/xzh/ns3/ns-3.22/examples'
thisdir='/home/xzh/ns3/ns-3.22/examples/DTN_SF_UDP'

并改一下文件中的参数,把duration(仿真时间)改成100。在该文件夹中打开命令行,输入:

./simulate.sh

即可测试。如果没有报错,且过了几分钟后他才运行完,那就没问题啦!

可能遇到的错误: 如果编译软件时是在sudo中编译的,则后续操作均需加上sudo。
simulate如果完成的太快,命令行没报错,但是打开Run1中的文件,会发现文件中有报错信息。

猜你喜欢

转载自blog.csdn.net/GregoryHanson/article/details/95312735