鉴于ndnSIM 安装踩坑 ——Ubuntu版本号与各种库版本号的对应关系_ndnsim切换版本-CSDN博客的原因,避免大坑,因此使用Vmware从安装系统开始,完全按照本教程操作,可以一次性成功。文章完成于2021-03-04,安装的是历史版本,因此有效期持久有效。
一、安装系统
1.官网下载镜像文件:https://ubuntu.com/download/desktop
2.由于目前Ubuntu已经更新到20版本,因此需要访问其他下载页
3.找到 Ubuntu 18.04.5 Desktop (64-bit) ,点击下载
4.将镜像下载到本地:https://releases.ubuntu.com/18.04/ubuntu-18.04.5-desktop-amd64.iso.torrent
二、在虚拟机中安装系统
使用的Vmware版本为:15.5.2 build-15785246
创建新的虚拟机,选择好镜像文件。
需要注意内存最好分配的多一点,不然后面ndnSIM编译时可能需要配置交换分区(ndnSIM 安装踩坑 ——g++: internal compiler error: Killed (program cc1plus)_g++编译遇到text busy-CSDN博客)。
推荐配置:
安装并进入系统后,需要进行:
①换源:打开 Software & Updates (不在设置里面,如果找不到就点击左下角九个点打开面板搜索),更换服务器,推荐选择华为或阿里,高校可以用edu。
②将所有软件重新更新一遍。
sudo apt-get update
sudo apt-get upgrade
三、安装依赖
sudo apt install build-essential libsqlite3-dev libboost-all-dev libssl-dev git python-setuptools castxml
sudo apt install python-dev python-pygraphviz python-kiwi python-gnome2 ipython libcairo2-dev python3-gi libgirepository1.0-dev python-gi python-gi-cairo gir1.2-gtk-3.0 gir1.2-goocanvas-2.0 python-pip
pip install pygraphviz pycairo PyGObject pygccxml
sudo apt-get install graphviz libgraphviz-dev graphviz-dev pkg-config
pip install pygraphviz
如果安装不成功就反复安装几次,后三句可能会报错,报错后暂不处理,继续执行下一句。等执行一轮后,使用 sudo apt-get update 和 sudo apt-get upgrade 更新一下,再执行一遍上述代码,即可成功。(如有问题,评论区见)
(千万不要再管ndnSIM官网的教程了,安装好这些就相当于配置好了所有依赖,不要多此一举!)直接按照本教程依次操作即可,不可同时参考官网教程,后面内容同理。
四、下载源码
mkdir ndnSIM
cd ndnSIM
git clone https://github.com/named-data-ndnSIM/ns-3-dev.git ns-3
git clone https://github.com/named-data-ndnSIM/pybindgen.git pybindgen
git clone https://github.com/named-data-ndnSIM/ndnSIM.git ns-3/src/ndnSIM
下载代码后,需要使用 git checkout 命令切换到对应版本:
cd ns-3/src/ndnSIM
git checkout ndnSIM-2.7
git submodule update --init
上面最后一步是安装NFD和ndn-cxx模块,注意之前的git和官网不完全一致。
cd ../..
git checkout ndnSIM-ns-3.29
cd ../pybindgen
git checkout 0.19.0
出现以下类似的提示说明 checkout 成功:
HEAD is now at fbbe13d Prepare release 2.7
Switched to a new branch 'ndnSIM-ns-3.29'
HEAD is now at ef30ba2 Merge branch 'tomhenderson-castxml'
在 pybindgen 还需进行一步安装:
sudo python setup.py install
出现如下内容说明安装成功。
提示:上述语句执行报错的解决方法,感谢罗张挥弦的贡献,大家有什么问题可以在评论区交流!
lzhx@lzhx-virtual-machine:~/Desktop/lzhx/ndnSIM/pybindgen$ sudo python setup.py install
...
File "/tmp/easy_install-NQxrNC/setuptools_scm-6.0.1/setup.py", line 52, in <module>
File "/tmp/easy_install-NQxrNC/setuptools_scm-6.0.1/setup.py", line 29, in scm_config
)
File "/tmp/easy_install-NQxrNC/setuptools_scm-6.0.1/src/setuptools_scm/__init__.py", line 8, in <module>
File "/tmp/easy_install-NQxrNC/setuptools_scm-6.0.1/src/setuptools_scm/config.py", line 6, in <module>
File "/tmp/easy_install-NQxrNC/setuptools_scm-6.0.1/src/setuptools_scm/utils.py", line 41
print(*k)
^
SyntaxError: invalid syntax
如果报错信息如上所示,提示 print(*k)
SyntaxError: invalid syntax ,可以执行如下语句,然后重新执行本部分的 setup.py 的安装!
pip install setuptools-scm
五、编译运行
1.编译
cd ndnSIM/ns-3
./waf configure --enable-examples
./waf
此时,会出现错误:
print(“Could not load plugin %r:%s” (filename,str(ex)),file=sys.stderr)
SyntaxError:invalid syntax
2.编译成功后即可运行仿真了
./waf --run ndn-simple --vis
./waf --run=ndn-grid --vis
运行过程中,会出现错误:
No visualization support (cannot import name core).
处理之后重新运行,即可出现结果。
ndnSIM 安装困难重重,如果你按照教程操作就一定能走到最后一步,给自己点个赞吧,心累~
NDN科研工作者,长期研究,欢迎讨论交流与合作!