【ns-3】VS Code开发环境配置

news2024/9/21 12:36:39

文章目录

  • 前言
  • 1. 安装VS Code
  • 2. 安装CMake和C++插件
  • 3. 配置环境
    • 3.1 配置代码智能提示
    • 3.2 配置build
    • 3.3 配置gdb调试
  • 后记
  • 参考文献

前言

正所谓“工欲善其事必先利其器”,本篇总结一下ns-3在VS Code开发环境下的配置。

版本信息如下:

  • Ubuntu 22.10
  • ns-3.37
  • VS Code 1.75

在开始下面的内容之前请先下载并安装ns-3,具体教程可参考上篇文章:【ns-3】零基础安装教程。


1. 安装VS Code

首先,从Visual Studio Code官网下载deb软件包:

在这里插入图片描述
然后,打开终端,进入deb软件包所在目录,输入下列命令回车即可安装VS Code(code_1.75.1-1675893397_amd64.deb即为我上面下载的deb软件包):

在这里插入图片描述
如果安装过程中提示缺少依赖包,那么根据提示安装相关依赖包即可。


2. 安装CMake和C++插件

打开VS Code,快捷键(Ctrl + Shift + X)打开扩展模块,或在最左侧活动栏中找到拓展模块图标点击打开拓展模块,在输入栏中输入“C/C++”,安装C++插件,如下图所示:

在这里插入图片描述
同理,安装CMake插件:

在这里插入图片描述


3. 配置环境

打开终端,进入ns-3.37源码目录,在该目录下启动VS Code(注意“code”和"."之间有各空格):

在这里插入图片描述
然后就会跳出VS Code,包含整个ns-3.37目录结构:

在这里插入图片描述

或者就是直接进入ns-3.37所在目录,右击ns-3.37目录,选择以Visual Studio Code方式打开。
在这里插入图片描述

在这里插入图片描述
和上面通过命令行操作是一样的效果。

3.1 配置代码智能提示

快捷键(Ctrl + Shift + P)打开命令面板(Command Palette),键入查找“C/C++: Edit Configurations (JSON)“并点击,此时会在窗口打开”c_cpp_properties.json“:

在这里插入图片描述
在这里插入图片描述
至此,就可以实现代码智能提示了。参考文献[1]建议,为了提高查找效率,可以将”includePath“修改如下:

在这里插入图片描述

3.2 配置build

实际测试,VS Code自动为ns-3.37配置了build命令:
点击左侧目录结构.vscode->tasks.json,或者通过快捷键(Ctrl + Shift + P)打开命令面板键入查找“Tasks:Configure Task“并点击,打开”tasks.json“文件,可以发现build命令已经修改为了ns3(”command“为”./ns3“),因此无需修改。

在这里插入图片描述

在这里插入图片描述
旧版本的用户可能需要手动配置build,具体可参考参考文献[1]。

3.3 配置gdb调试

点击左侧目录结构.vscode->launch.json,或者通过快捷键(Ctrl + Shift + P)打开命令面板键入查找“Open ‘launch.json’“并点击,打开”launch.json“文件,修改”program“字段:将"ns3-dev"修改为”ns3.37“。为什么这样做请参考参考文献[2](不推荐参考文献[1]中拷贝动态库的方法)。

修改前:

在这里插入图片描述
修改后:

在这里插入图片描述

完成上面三步配置后,就可以用VS Code愉快地编写、build和调试代码了!

测试一下,在VS Code中打开examples-tutorial-first.cc,Shift + Command + B构建,F5调试,VS
Code的终端窗口显示结果如下:

在这里插入图片描述


后记

作者是第一次接触ns-3、C++、VS Code等,可以说是小白中的小白,但是最终通过查阅资料成功在VS Code中配置了ns-3开发环境。所以我相信读者朋友们只要有耐心一定也可以解决在学习ns-3过程中遇到的绝大多数问题,在此与各位共勉。


参考文献

  1. https://www.bilibili.com/read/cv9932411/
  2. https://zhuanlan.zhihu.com/p/540733443

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用户难增,广告营收下跌,微博还能“高飞”吗?

微博2022年的业绩再次“变脸”。 图源:微博 2023年3月1日,微博公布了2022年Q4及全年财报。2022年营收18.4亿美元,剔除汇率因素同比下跌15%;2022年Q2以来,微博坚持降本增效策略,提升了运营效率,…

Jquery实现增删改除

文章目录一.关于增加部分区别:二.关于删除部分关于在表格中实现增删改1.首先我们需要创建基本的HTML项目2.相关的css和js的引用3.呈上源代码(1).HTML源代码(2).js源代码(自己创建的)3.效果图&am…

大数据技术——Scala语言基础

Scala基础知识控制结构if条件表达式有一点与Java不同的是&#xff0c;Scala中的if表达式的值可以赋值给变量while循环for循环基本语法其中,“变量<-表达式”被称为“生成器(generator).”“守卫(guard)"的表达式:过滤出一些满足条件的结果。基本语法:for (变量<-表达…

Sandstorm 建设者亮点——2023 年 2 月

隆重推出 Sandstorm 建设者亮点——2023 年 2 月版&#xff0c;这是由最厉害的 Sandstorm 社区制作的独一无二的 NFT 系列。 从突破性的兔子机器人到神奇的蒸汽朋克海盗船&#xff0c;Sandstorm 建设者亮点 NFT 系列展示了一系列独一无二的创作。 19 项新资产将添加至 Sandstor…

提升内部客户服务的 13 个最佳实践攻略!

客户服务包含两个方面的内容&#xff1a;一个是内部服务&#xff1b;一个是外部服务。每一个企业在发展过程中都有内部客户和外部客户&#xff0c;内部服务是针对内部客户的&#xff0c;自己公司的部门与部门之间互为内部客户&#xff1b;外部服务是针对公司之外的外部客户的。…

MySQL数据库存储引擎【InnoDB/MyISAM/MEMORY 】

1.InnoDB存储引擎InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。在MySQL从3.23.34a开始包含InnnoDB。它是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力&#xff0c;也是其他存储引擎不能比拟的。靠后版本的MySQL的默认存…

你没用过工业智能网关?它已经在远程监控行业很热门了,足不出户远程控制设备。

一、项目背景 钢铁企业作为一个能量消耗比较大&#xff0c;污水排放比较多的工业&#xff0c;只有对技术进行不断的改革才能够实现节能减排的目的。这就需要相应的钢铁企业厂能够应用新的技术&#xff0c;实现污水的安全无污染处理&#xff0c;不断地改善环境&#xff0c;提高相…

卡特兰数及常见模型

卡特兰数 英文名Catalan number&#xff0c; 是组合数学中一个常出现在各种计数问题中出现的数列。其前几项为: 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 35357670 129644790 477638700 1767263190 6564120420 24466267020 91482563640 343…

苹果电脑怎么截屏?图文教学,包教包会

苹果电脑是很多设计师和程序员们所钟爱的电脑品牌&#xff0c;但是在使用过程中&#xff0c;有些小功能操作并不是那么容易掌握。比如&#xff0c;苹果电脑怎么截屏呢&#xff1f;如果您是新手&#xff0c;可能会感到有些困惑。别担心&#xff0c;下面我们将为您详细介绍如何在…

springboot整合minio及工具类

说明&#xff1a;本文章是springboot和minio的整合&#xff0c;同时还有上传和下载工具类&#xff0c;minio的具体介绍这里就不多说了【上传和下载都是基础工具类&#xff0c; minio的安装如果有时间就更新】 工程图&#xff1a;【主要功能在于工具类&#xff0c;在代码块11和…

好意外,发现永久免费使用的云服务器

原因就不说了&#xff0c;说一下过程&#xff0c;在百度搜pythonIDE的时候&#xff0c;发现了一个网站 https://lightly.teamcode.com/https://lightly.teamcode.com/ 就是这个网站&#xff0c;看见这个免费试用&#xff0c;一开始觉得没什么&#xff0c;在尝试使用的过程中发…

IIC总线式驱动开发(mpu6050)(二)

目录 六、I2C总线二级外设驱动开发方法 七、I2C总线二级外设驱动开发之名称匹配 1. i2c_register_board_info 2. i2c_new_device&#xff1a;明确二级外设地址的情况下可用 3. i2c_new_probed_device 八、I2C总线二级外设驱动开发之设备树匹配 六、I2C总线二级外设驱动开…

AVL树(Insert)

文章目录AVL树代码模拟实现Insert重点控制平衡:旋转->平衡右单旋左单旋左右双旋双旋平衡因子更新错误右左双旋左右双旋erase了解AVL树的性能AVL树 代码 高度平衡二叉搜索树 引入 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单…

C/C++网络编程笔记Socket

https://www.bilibili.com/video/BV11Z4y157RY/?vd_sourced0030c72c95e04a14c5614c1c0e6159b上面链接是B站的博主教程&#xff0c;源代码来自上面视频&#xff0c;侵删&#xff0c;这里只是做笔记&#xff0c;以供复习和分享。上一篇博客我记录了配置环境并且跑通了&#xff0…

从头开始搭建一个SpringBoot项目--SpringBoot文件的上传与下载

从头开始搭建一个SpringBoot项目--SpringBoot文件的上传前言流程分析代码结构代码详情UploadFileInfo.classUploadController.classUploadDao.classUploadDao.xmlUploadServices.classUploadServicesImpl.class测试下载示例前言 文件的上传和下载是很多系统必备的功能&#xf…

pytorch-复现经典深度学习模型-LeNet5

Neural Networks 使用torch.nn包来构建神经网络。nn包依赖autograd包来定义模型并求导。 一个nn.Module包含各个层和一个forward(input)方法&#xff0c;该方法返回output。 一个简单的前馈神经网络&#xff0c;它接受一个输入&#xff0c;然后一层接着一层地传递&#xff0c;…

代码随想录算法训练营day47 |动态规划 198打家劫舍 213打家劫舍II 337打家劫舍III

day47198.打家劫舍1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组213.打家劫舍II情况一&#xff1a;考虑不包含首尾元素情况二&#xff1a;考虑包含首元素&#xff0c;不包含尾元素情况三&#x…

网络技术|网络地址转换与IPv6|路由设计基础|4

对应讲义——p6 p7NAT例题例1解1例2解2例3解3例4解4一、IPv6地址用二进制格式表示128位的一个IPv6地址&#xff0c;按每16位为一个位段&#xff0c;划分为8个位段。若某个IPv6地址中出现多个连续的二进制0&#xff0c;可以通过压缩某个位段中的前导0来简化IPv6地址的表示。例如…

1月奶粉电商销售数据榜单:销售额约20亿,高端化趋势明显

鲸参谋电商数据监测的2023年1月份京东平台“奶粉”品类销售数据榜单出炉&#xff01; 根据鲸参谋数据显示&#xff0c;1月份京东平台上奶粉的销量约675万件&#xff0c;销售额约20亿元&#xff0c;环比均下降19%左右。与去年相比&#xff0c;整体也下滑了近34%。可以看出&#…

真无线耳机哪个牌子好用?2023便宜好用的无线耳机推荐

蓝牙耳机经过近几年的快速发展&#xff0c;变得越来越普及&#xff0c;并且在一些性能上也做得越来越好。那么&#xff0c;真无线耳机哪个牌子好用&#xff1f;下面&#xff0c;我来给大家推荐几款便宜好用的无线耳机&#xff0c;可以参考一下。 一、南卡小音舱蓝牙耳机 参考…