Loading

记一次ns3的安装过程

官方安装教程:https://www.nsnam.org/wiki/Installation

推荐使用Ubuntu18.04,Ubuntu20.04有些依赖无法下载。

准备工作

# 如果下载速度很慢,可以更换源
sudo sed -i 's#archive.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list
# 下面的一定要执行
sudo apt update
sudo apt upgrade

安装 ns3 所需要的依赖环境

# Ubuntu18.04 下依赖都能安装
sudo apt-get install g++ python3
sudo apt-get install g++ python3 python3-dev pkg-config sqlite3
sudo apt-get install python3-setuptools git
sudo apt-get install qt5-default mercurial
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 dvipng latexmk
sudo apt-get install python3-sphinx dia
sudo apt-get install gsl-bin libgsl-dev libgsl23 libgslcblas0
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-6.0-dev llvm-6.0-dev automake
sudo apt install python3-pip
sudo pip3 install --upgrade pip
python3 -m pip install --user cxxfilt
sudo apt-get install libgtk-3-dev
sudo apt-get install vtun lxc uml-utilities
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
# 建议安装完,copy全部,再执行一遍,看有没有漏掉的。

下载源文件并进行解压安装

下载地址:https://www.nsnam.org/releases/

tar xjf ns-allinone-3.31.tar.bz2 # 解压
chmod -R 777 ns-allinone-3.31 # 修改权限
ls
cd ns-allinone-3.31 # 切换到解压目录下

image-20201112195403096

./build.py --enable-examples --enable-test

输出如下

# Build NS-3
Entering directory `./ns-3.31'
=>  /usr/bin/python3 waf configure clean --with-pybindgen ../pybindgen-0.21.0
Setting top to                           : /home/ns-allinone-3.31/ns-3.31
Setting out to                           : /home/ns-allinone-3.31/ns-3.31/build
Checking for 'gcc' (C compiler)          : /usr/bin/gcc
Checking for cc version                  : 7.5.0
Checking for 'g++' (C++ compiler)        : /usr/bin/g++
Checking for compilation flag -Wl,--soname=foo support : ok
Checking for compilation flag -std=c++11 support       : ok
Checking boost includes                                : 1_65_1
Checking boost libs                                    : ok
Checking for boost linkage                             : ok
Checking for program 'python'                          : /usr/bin/python3
Checking for python version >= 2.3                     : 3.6.9
python-config                                          : /usr/bin/python3-config
Asking python-config for pyembed '--cflags --libs --ldflags --embed' flags : not found
Asking python-config for pyembed '--cflags --libs --ldflags' flags         : yes
Testing pyembed configuration                                              : yes
Asking python-config for pyext '--cflags --libs --ldflags' flags           : yes
Testing pyext configuration                                                : yes
Checking for compilation flag -fvisibility=hidden support                  : ok
Checking for compilation flag -Wno-array-bounds support                    : ok
Checking for pybindgen location                                            : ../pybindgen-0.21.0 (given)
Checking for python module 'pybindgen'                                     : 0.21.0
Checking for pybindgen version                                             : 0.21.0
Checking for code snippet                                                  : yes
Checking for types uint64_t and unsigned long equivalence                  : no
Checking for code snippet                                                  : no
Checking for types uint64_t and unsigned long long equivalence             : yes
Checking for the apidefs that can be used for Python bindings              : gcc-LP64
Checking for internal GCC cxxabi                                           : complete
Checking for python module 'pygccxml'                                      : not found
Checking for click location                                                : not found
Checking for program 'pkg-config'                                          : /usr/bin/pkg-config
Checking for 'gtk+-3.0'                                                    : yes
Checking for 'libxml-2.0'                                                  : yes
checking for uint128_t                                                     : not found
checking for __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 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                                                    : yes
Checking for header sys/ioctl.h                                            : yes
Checking for header net/if.h                                               : yes
Checking for header net/ethernet.h                                         : yes
Checking for header linux/if_tun.h                                         : yes
Checking for header netpacket/packet.h                                     : yes
Checking for NSC location                                                  : not found
Checking for OpenFlow location                                             : not found
Checking for 'sqlite3'                                                     : yes
Checking for header semaphore.h                                            : yes
Checking for header linux/if_tun.h                                         : yes
Checking for python module 'gi'                                            : 3.26.1
Checking for python module 'gi.repository.GObject'                         : ok
Checking for python module 'cairo'                                         : ok
Checking for python module 'pygraphviz'                                    : 1.4rc1
Checking for python module 'gi.repository.Gtk'                             : ok
Checking for python module 'gi.repository.Gdk'                             : ok
Checking for python module 'gi.repository.Pango'                           : ok
Checking for python module 'gi.repository.GooCanvas'                       : ok
Checking for program 'sudo'                                                : /usr/bin/sudo
Checking for program 'valgrind'                                            : /usr/bin/valgrind
Checking for 'gsl'                                                         : yes
libgcrypt-config                                                           : not found
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/bin/doxygen
---- Summary of optional NS-3 features:
Build profile                 : debug
Build directory               :
BRITE Integration             : not enabled (BRITE not enabled (see option --with-brite))
DES Metrics event collection  : not enabled (defaults to disabled)
Emulation FdNetDevice         : enabled
Examples                      : not enabled (defaults to disabled)
File descriptor NetDevice     : enabled
GNU Scientific Library (GSL)  : enabled
Gcrypt library                : not enabled (libgcrypt not found: you can use libgcrypt-config to find its location.)
GtkConfigStore                : enabled
MPI Support                   : not enabled (option --enable-mpi not selected)
NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration     : not enabled (OpenFlow not enabled (see option --with-openflow))
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 API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
Python Bindings               : enabled
Real Time Simulator           : enabled
SQLite stats support          : enabled
Tap Bridge                    : enabled
Tap FdNetDevice               : enabled
Tests                         : not enabled (defaults to disabled)
Threading Primitives          : enabled
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
XmlIo                         : enabled
'configure' finished successfully (5.788s)
'clean' finished successfully (0.016s)

image-20201112205602757

重点关注下列输出,涉及到能否支持Python。

Python API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
Python Bindings               : enabled
pip3 install pygccxml

image-20201112210601551

cd ns-3.31
./waf --build-profile=debug --enable-examples --enable-test configure

image-20201112210816597

pip3 install CastXML #安装好后,重启一下。

image-20201112211522662

image-20201112211714841

./test.py #问题解决了,继续安装
./waf --run hello-simulator # 验证是否安装成功

image-20201112232306746

其它问题

image-20201108182844801

 pip3 install PyBindGen
posted @ 2020-11-12 23:32  Rookie丶flying  阅读(2558)  评论(1编辑  收藏  举报