考虑到日常使用,采用虚拟机virtual box5.1.22+ubuntu16.04.2环境。安装过程网上一大把,略去不表。安装最新版本ns3.26。
1.预安装 (安装库)
打开终端开始这关键的第一步吧
- 首先更新源
0 sudo apt-get update
- C++和python安装,必装
1 sudo apt-get install gcc g++ python
2 sudo apt-get install gcc g++ python python-dev - NS3代码维护使用的源码版本控制管理系统
3 sudo apt-get install mercurial - 运行python绑定ns-3-dev需要bazaar这个组件
4 sudo apt-get install bzr - 调试工具
5 sudo apt-get install gdb valgrind - 支持更多精确WIFI模块的GNU Scientific Library (GSL)
6 sudo apt-get install gsl-bin libgsl-dev libgsl2 (重要,网上其他这句话多为错误) - 仿真必需的词法分析器和语法分析生成器,必装
7 sudo apt-get install flex bison libfl-dev - 一些Network Simulation Cradle (nsc) stacks需要gcc-3.4
8 sudo apt-get install g++ gcc //不用执行,已经是最新版 - 读取pcap的packet traces,即包嗅探器
9 sudo apt-get install tcpdump - 支持统计特性的数据库软件
10 sudo apt-get install sqlite sqlite3 libsqlite3-dev - xml的配置存储软件(requires libxml2 >= version 2.7)
11 sudo apt-get install libxml2 libxml2-dev - 基于GTK的配置系统
12 sudo apt-get install libgtk2.0-0 libgtk2.0-dev - 在虚拟机and ns-3上测试
13 sudo apt-get install vtun lxc - 支持utils/check-style.py 代码风格检查程序
14 sudo apt-get install uncrustify - 文档生成器,从源代码中生成说明文档
15 sudo apt-get install doxygen graphviz imagemagick
16 sudo apt-get install texlive texlive-extra-utils texlive-latex-extra //很大 留到最后吧
17 sudo apt-get install python-sphinx dia - Gustavo’s ns-3-pyviz的可视化软件
18 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev - 支持openflow 模块(requires some boost libraries)
19 sudo apt-get install libboost-signals-dev libboost-filesystem-dev - 支持基于 MPI的分布式仿真
20 sudo apt-get install openmpi*
2.安装ns3
使用tarball
1 mkdir tarballs
2 cd tarballs
3 wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2
4 tar xjf ns-allinone-3.26.tar.bz2
3. 编译ns3
1 cd ns-allinone-3.26
2 ./build.py (会很久) //这里报lte错误就是内存给小了,改大虚拟机内存或者用swap,我把1g内存改为4g就没这错误了。
3 cd ns-3.26
4 ./waf distclean (清除整个build目录)
5 ./waf -d optimized configure
6 ./waf -d debug configure
7 ./waf //会很久
8 ./waf -d debug --enable-sudo configure
9 ./waf configure --enable-tests //使测试可用
10 ./waf configure --enable-examples //使例子可用
PS:这两个很重要,执行完后可以看到examples和tests状态均为enable
4.测试
./waf --run hello-simulator
会输出hello simulator,则大功告成!
5. 补充
3.编译ns3中步骤2可能的错误:
[1462/1770] cxx: src/lte/model/lte-ue-power-control.cc -> build/src/lte/model/lte-ue-power-control.cc.1.o
[1463/1770] cxx: build/src/lte/bindings/ns3module.cc -> build/src/lte/bindings/ns3module.cc.7.o
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
似乎是g++编译器自身的问题,解决办法是利用swap:
sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo swapon /swapfile
编译完成后删除:
sudo swapoff /swapfile
sudo rm /swapfile
//第五步补充未测试
参考资料:
http://blog.csdn.net/rical730/article/details/71504169
http://blog.csdn.net/wt_926613/article/details/39645029
http://www.linuxdiyf.com/linux/25505.html
http://blog.csdn.net/rayaohb/article/details/7374615
http://www.cnblogs.com/yibobo-blog/p/4924381.html
http://blog.163.com/yuhao_x10a/blog/static/186823222010101623644687/
http://blog.sina.com.cn/s/blog_b0eecc840102ux8i.html
http://skypacer210.github.io/2014/12/26/building-ns-3-on-ubuntu/