随着ns3的进步,bake编译给ns3编译带来了很大的方便!!!
下面总结了两种ns3的依赖安装方法:bake、手动安装依赖。强推bake,试了bake再也不想手动安装了。
之前自己安装一步步依赖,现在回看过来实在是有点麻烦,ns3出了新的安装工具:bake,非常简单的安装步骤,帮助安装ns3不同版本的依赖,参考链接:ns3官方安装教程
使用bake安装ns3的过程就在这个官方安装教程的Installation中,官方描述的步骤已经非常清晰了。位置如下图:
本人使用bake安装的过程十分丝滑,没有什么要注意的,如果过程中出现报错,考虑是否是文件目录错误,读取不了上层文件。
另外,就是在bake.py configure -e ns-3.29时,注意一下这里官方文档以3.29为例,你想安装3.35就把3.29替换成3.35就行了。改成:
bake.py configure -e ns-3.35
安装完成后,会在虚拟机的bake同级目录下创建一个source文件夹,用于存储不同的ns3不同版本的源码。
例如,使用bake安装ns3.35的所有依赖后,需要运行ns3.35版本之上写的源码,那只需要将该源码放在source中,就可以运行了。
如果出现ns3.35build successfully,而基于ns3.35版本之上写的源码build failed,那么十有八九就是该源码还需要安装其他依赖,看一下这个源码上的github说明。
写在前面:如果不想进行bake安装,可以参考下面的安装过程,比较繁琐。这里几乎总结了ns3几次安装过程中遇到的所有依赖问题,如果都是一遍还是报错,build failed,那还是用一下bake安装吧,毕竟试错的过程足够安装好多个bake了。
本机安装ns3处于ubuntu20.04环境下,该环境能够实现屏幕全屏,和window共用复制粘贴键等功能,因此在20.04环境下安装ns3。
sudo apt-get install gcc g++ python python3
sudo apt-get install gcc g++ python python3 python3-dev
sudo apt-get install python3-setuptools git mercurial
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-get install libgtk2.0-0 libgtk2.0-dev
sudo apt-get install vtun lxc uml-utilities
//问题二
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
以下语句报错
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
错误如下:
首先,这句话是安装一些列东西,那么先弄明白这句话能成功安装哪些,不能安装哪些。
上图提示ipython不能安装,就在语句中先去掉ipython。
接下来,提示变化为:
再去掉python-pygraphviz。
发现不再报错。则只有ipython和python-pygraphviz无法安装。接下来分别安装ipython和python-pygraphviz。
按照以下步骤即可安装ipython:
python版本更换:2版本更改为 3
pip3安装:ubuntu20 安装pip3
ipython安装:ubuntu20.04 python3中安装 ipython
graphviz是python的画图工具,可以先不安装,安装可以参考这个链接:python安装graphviz
出现以下错误:
同样按照问题一的解决办法来寻找安装失败的原因,发现去除libboost-signals-dev则安装成功。
接下来再去安装libboost-signals-dev
据官网:ns3各项功能与安装包对应
参考链接二中说该模块可以先不安装——参考链接二
其他解决办法可参考: libssl依赖问题
gcc版本问题是ns3编译过程中常见的报错,不同ns3版本需要对应不同的gcc版本,如果遇到一些cc文件无法编译的语法问题,考虑gcc版本降级。错误示意如下图:
解决办法参考链接:gcc降级到5.5。ubuntu20.04可参考:Ubuntu高版本如何安装低版本GCC (以Ubuntu 20安装GCC5为例)
另外,总结一些ns3版本和gcc版本的对应关系:
NS-3.26的gccxml仅支持gcc-4.2~gcc-4.8版本,而Ubuntu16.04下版本为gcc-5.4,因此需要多下载一个gcc4.8及g++4.8;参考链接:ns3.26–》gcc-4.2~gcc-4.8
gcc版本切换:Ubuntu高版本如何安装低版本GCC (以Ubuntu 20安装GCC5为例)
收录一些ns3版本安装指南:
ns3.29–》gcc-4.9.2
ns3.26–》gcc-4.2~gcc-4.8
ns3.25–》gcc3.4
可能会涉及以下问题,以下链接亲测可用:
sudo ./waf --run scratch/mtu_wan