一、安装

已经安装过n个版本了。。。

现在除了版本号>=3.36的用cmake代替了waf编译以外,好像没有什么变化

下载具体流程参考以下网址,改改版本号就行,其他都一样,目前我用的是3.35

Ubuntu上安装NS3(最详细的图文介绍)_ubuntu虚拟机安装ns3-CSDN博客

二、安装ns3-gym

直接参考这篇博客就好,非常详细

建议ubuntu用20.04,不然一直会有zmq的版本不匹配问题,很麻烦

在Ubuntu 20.04上安装NS3.34和NS3-gym - Minaduki's Blog

三、安装ns-3-leo

这个模块是拿来做卫星leo仿真的,还在研究中,版本可能有点限制,论文用的是3.30,目前还只有wscript,所以我用的3.35版本,据说源码还有大坑,唉再看吧

从github上可以下载,解压后放到/ns-allinone-3.35/ns-3.35/src

根据wscript(ns3-users论坛上的大佬有提到)要改名为:leo

然后重新configure、build就好

sudo ./waf configure --enable-examples --enable-tests
sudo ./waf build

但是有不少坑

  1. 可能会报错找不到“ns3/xxxx.h”:最简单粗暴的方法就是去找这个头文件,直接复制到/build/ns3/目录下,多半是编译的时候没有吧这个头文件编译进去,更底层的原因我也不知道了
  2. 找不到"“epedemic-routing-module.h”:一开始死活找不到这个头文件,后来才看明白“xxx-module.h”就是src下面各个module编译成功形成的头文件,从网上去找了“epedemic-routing”,当做新模块插入就可以啦,注意ns3-store里面也有这个模块,但是用了CMake,幸好从github上面找到了老版本
  3. leo的examples源码运行的时候会报错,依旧是版本问题,参考这个回答,完美解决​​​​​​NS3版本细节_error: ‘default’ is not a member of ‘ns3::yanswifi-CSDN博客

四、用VScode联合调试

之前用过一段时间NS3,当时用的虚拟机,安装上VScode就已经很卡了,最后是直接用文本编辑器一段段敲的。。。

最近实在受不了卡顿的虚拟机了,果断换了双系统,不得不说流畅多了,就是操作指令还不是很适应,因为后面还要用pytorch+NS3联调,所以还是决定用VScode

  1. 安装很简单,官网下载deb再安装就行
  2. 安装好了先把插件弄好,常用的c\c++\python之类的,就选排名最靠前的就行了
  3. 最后是需要在/ns3-allinone-3.35/ns-3.35/目录下打开vscode,因为我自己还插入了模块,我发现不用sudo模块waf好像都会报错,所以选择切换成root模式打开vscode
  4. 打开了以后要去修改一些配置文件,都会自动出现在当前文件夹下的.vscode文件夹下,可以参考这两篇文章【ns-3】VS Code开发环境配置_如何用vscode打开ns3-CSDN博客
    1. C\C++ Edit Configurations:用ctrl+shift+P打开配置,搜索,然后打开json或者ui格式编辑都可以,主要改"includePath",可以实现代码提示,这个看了网上很多教程都没有成功,最后在youtube上找到了教程,这里的路径多加了一条就ok了
    2. tasks.json:一开始怎么也找不到,网上说是版本问题,现在的vscode应该是隐藏了这些文件,后面是选中了xx.cpp文件,在"终端-配置默认任务”里面选择cpp的那个选项,会自动生成task.json的模版文件,主要修改文件目录和编译命令"command"
    3. launch,json:这个也是完全找不到,最后是在vscode左边的调试那里新建调试文件才有的,一样是修改"program“的路径
  5. 最后ctrl+shift+B重新编译运行就可以啦,注意NS3默认运行的目录是在scratch下面,我一般是把代码copy过去,这样也不影响源代码
#1.打开
#普通打开
code .
#管理员模式打开
sudo code --no-sandbox --disable-gpu-sandbox --user-data-dir=/root/.vscode/

#2.修改c_cpp_
 "includePath": [

                "${workspaceFolder}/build/ns3/**"
                "home/zoe/ns-allinone-3.35/ns-3.35/build/"

            ], 

#3.修改task.json
"command":"./waf"

#4.修改launch.json
"programs":"/home/zoe/ns-allinone-3.35/ns-3.35/build/scratch/${fileBasenameNoExtension}"


终于把NS3搞好了,接下来还要coding,继续努力吧,也欢迎大家来和我讨论,每一步的坑要走出来都不容易啊~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐