装了一天的NS-3的个人总结
安装脚本那部分的代码具有时效性(官网可能会更新对某些依赖的支持)和片面性(适用于Ubuntu18.04与NS-3的3.30.1版本,其他组合可能会不一样)
如果和我的配置很不一样,或者隔了很久,还是建议看官网文档:https://www.nsnam.org/wiki/Installation#Installation
文章目录
- 先决条件
- 环境
- 更新源
- 安装依赖
- vim
- 安装
- 创建脚本文件
- geany
- 安装
- 创建脚本文件
- 安装NS-3
- 获取安装包
- 安装
- 遇到的问题
- 内存不足(g++: internal compiler error: 已杀死(program cclplus))
- 方案一:增加内存
- 方案二:交换分区
- 交换分区的问题:文本文件正忙
先决条件
环境
NS-3不支持Windows环境,支持Linux、MacOS
双系统、虚拟机、再来一台电脑,总之需要一个非windows环境
这个教程的环境是VMware虚拟机+Ubuntu18.04LTS
更新源
Linux安装软件,是从源列表中查询安装的,源列表是一些网址,网址指向了可以安装的软件,这些软件是绝对安全且可用的
apt-get 是Linux发行版的‘包管理器’
在终端执行以下两条命令
sudo apt-get update
sudo apt-get dist-upgrade
第一条:update 更新系统的源列表
第二条:upgrade 对比本机的软件和源列表指向的软件库中的软件版本,更新旧的软件,不会升级所有具有依赖性问题的软件或包。(而dist-upgrade会尝试卸载有依赖问题的软件或包,更彻底,也有一定风险)
安装依赖
先装一个vim、geany之类的文本编辑器,用来写批量安装脚本,如果不想写,可以把脚本内容一条一条执行
之后分别用vim和geany举栗子
vim是全终端操作
geany有图形界面
各有所长
下面是脚本内容,根据2020/6/24的官方文档对ubuntu18.04的依赖要求整理的,如果时间隔的久了或者配置不一样,去官方文档自己整理一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/bin/sh 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 pip python3 -m pip install --user cxxfilt sudo apt-get install libgtk-3-dev sudo apt-get install libboost-signals-dev libboost-filesystem-dev |
一共20条
注意:特别是用脚本批量安装的时候,一定要看每个包是否安装成功了,有无出现包被废弃、无法定位软件包等情况,根据提示加以处理,提示让换哪个名字就把哪个名字换了,一般都能解决。这类提示不会加红,如果批量安装很容易忽略。一般如果使用的是隔了一段时间的脚本,因为官方更新,会出现这种情况,如果要避免,可以去官方文档整理一个新的脚本。
vim
安装
sudo apt-get install vim
创建脚本文件
输入
vi mysetup
进入vim创建的mysetup文件中
键盘按一下’“i”,进入输入模式
复制上面的脚本内容,ctrl+shift+INS粘到文件中(或者你也可以选择自己打)
按"Esc"键,输入":",在底行输入"wq"并回车,就保存退出了
编译并运行脚本文件
在终端输入
chmod +x mysetup
./mysetup
盯着看有没有未安装成功的,或者等它安装完翻一遍信息,处理一下
geany
安装
sudo apt-get install geany
按"Windows"键
搜索geany,点一下
创建脚本文件
新建文档
另存为
另保存为mysetup
把上面的脚本内容粘进去,保存
之后的操作一样,开一个终端,编译运行
安装NS-3
获取安装包
进NS-3官网:http://www.nsnam.org/releases/
下载一个NS-3的安装包,
解压
安装
进第一层文件夹
开始安装NS-3
输入
sudo ./build.py
如果幸运的话,最后你能看到
可喜可贺!可喜可贺!
遇到的问题
内存不足(g++: internal compiler error: 已杀死(program cclplus))
虽然我折腾了一天,但其实问题的根本都是内存不足,导致g++停止编译,被系统杀死了,但是这条信息不是红的,它会显示在红色报错的上方不远处,在这之前终端的消息会停滞很久
而红色醒目的报错什么都有,二且每次都不同,“ns3-wifi”,“ns3-internet”, "ns3-network"之类的,总之遇到好多红色报错,每次都不一样,因为这个换了三个版本,从3.30.1到3.28到3.26 ,于是折腾了好久都没解决
这一天的时间,都是因为我没有重视白色信息orz
方案一:增加内存
给你的虚拟机增加内存,然后再安装试试,如果调到电脑极限还是不够。或者不是虚拟机,使用方法二
方案二:交换分区
交换分区就是暂时存放内存中暂时用不到的东西的地方,用这个方法给内存减负,由于反复读取磁盘,速率会变慢,但是咱们安都安不上了,还在乎速率吗!
分配空间
bs的值为每块的大小,count的值是一共多少块,下面这条示例的意思是:创建一个大小为64M*160=10G的空文件
具体大小可以酌情自己调
sudo dd if=/dev/zero of=/swapfile bs=64M count=160
分区越大,创建的时间越长,也可以看到,其读写速度也会变慢,但是咱们不在乎
创建交换分区
sudo mkswap /swapfile
激活交换分区
查看是否激活成功
swapon /swapfile
swapon -s
激活成功了,再去安一次NS-3
如果还是不够
把原来的分区删了,建一个更大的
删除,并查看是否删除成功
sudo swapoff /swapfile
swapon -s
交换分区的问题:文本文件正忙
创建空文件的时候显示:打开失败文本文件正忙
然后用swapon -s查了一下
发现系统里已经有了一个叫swapfile的交换分区
这个swapfile应该是默认的交换分区,但是很明显这个分区并没有给编译NS-3提供帮助
我一开始没有成功运行第一条创建空文件,之后不管,执行了第二条和第三条,里面有个提示,这个分区文件是挂载状态
于是果断删除这个默认分区,然后三步走建一个新的
这是当时的整套流程
最后,用完了交换分区,记得把他删了,它占着磁盘空间,平常也用不到