linux | vscode | makefile | c++编译和调试

简单介绍环境:
vscode 、centos、 gcc、g++、makefile
简单来说就是,写好项目然后再自己写makefile脚本实现编译。所以看这篇博客的用户需要了解gcc编译的一些常用命令以及makefile语法。在网上看了很多教程,以及官网也看了很多次,最后自己一点多一点摸索,有的些许收获。

首先要配置编译的文件tasks.json文件、调试的launch.json文件。刚开始看很抗拒,但看久了,也就自然而然的接受了。这么说吧,这两个文件很个性,所以没有经验的去用它做复杂一点的编译和调试会吃不少苦。个性,是应为,如果是编译一个项目的话,你可以试试手动输命令调试,其中涉及动态链接库(动态链接库也是容易出一堆问题),编译成功之后,去调试,对调试也理解更深了,没有可执行文件是无法调试的,简单点来说,调试就是跑你编译成功的可执行文件,毕竟机器跑很快的,所以需要设置断点,让它按照你想要的逻辑去跑,但是要注意在多线程环境下,可能程序没有按照你想的顺序跑,可能一下子跑下又跑上(可能应该一直往下跑的)。

{"version": "2.0.0","tasks": [{"label": "Build C++ project","type": "shell","group": "build","command": "make"		//这相当于跑编译命令  如果手动编译就像 g++ xxx -0 xxx然后设置参数啥的 还经常会碰见cwd意思是确定当前的环境,比如多你的命令是在哪个目录上跑的啊        },{"label": "Build & run C++ project",//这是编译然后运行"type": "shell","group": {"kind": "test","isDefault": true},"command": "make","args": ["run"]},]
}

在这里插入图片描述

{"version": "0.2.0","configurations": [{"name": "C++ Debug (gdb)","type": "cppdbg","request": "launch","program": "${workspaceFolder}/dronline","preLaunchTask": "Build C++ project","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}",			//上面介绍过了"environment": [],"externalConsole": false,				//这是打开新的终端"MIMode": "gdb",						//调试模式?"miDebuggerPath": "/usr/bin/gdb",		//这是启动gdb的路径"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]

可以看这个参考链接

vs是懒人模式,但有很多地方也很头疼,主要在导库,设置模式,这块。你要确定目录,然后才是放库。说简单点就是,比如 /usr/lib/libsort.so
你要添加这个库,你需要先把/usr/lib给添加上,然后再添加libsort.so,
手敲就是这样

g++ hello.cpp -L/usr/lib -lsort -o hello

大概就这么多了。
祝好

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

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

相关文章

前端开发实习总结参考范文

▼前端开发实习总结篇四 读了三年的大学,然而大多数人对本专业的认识还是不那么透彻,学的东西真正能够学以致用的东西很少,大家都抱怨没有实践的机会,在很多同学心里面对于本专业还是很茫然。直到即将毕业的时候才知道我们以前学…

uni-app中的uni.requireNativePlugin()

这个方法是用来引入原生插件的方法,自 HBuilderX 1.4 版本起,uni-app 支持引入原生插件,使用方式如下: const PluginName uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称 引入插件的类型有三种&#xff1…

东南大学齿轮箱故障诊断(Python代码,CNN结合LSTM模型)

运行代码要求: 代码运行环境要求:Keras版本>2.4.0,python版本>3.6.0 1.东南大学采集数据平台: 数据 该数据集包含2个子数据集,包括轴承数据和齿轮数据,这两个子数据集都是在传动系动力学模拟器&am…

【计算机网络】计算机网络基础知识总结(秋招篇)

文章目录 前言计算机网络笔记TCP和UDP分别是什么 有什么区别基于TCP UDP这两个协议的上层协议有哪些?TCP和UDP分别在哪些领域被用的多?TCP实现可靠性传输用了哪些技术?(TCP如何实现可靠性传输)讲一下超时重传和超时定时…

全志F1C200S嵌入式驱动开发(触摸屏驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 触摸屏一般有两种,一种是电阻触摸屏,一种是电容触摸屏。前者需要自己买一颗i2c的信号读取芯片,用的比较多的是ns2009。后者自身集成了读取芯片,用的比较多的是gt911。正好之前测…

C# Modbus TCP上位机测试

前面说了三菱和西门子PLC的上位机通信,实际在生产应用中,设备会有很多不同的厂家生产的PLC,那么,我们就需要一种通用的语言,进行设备之间的通信,工业上较为广泛使用的语言之一就是Modbus。 Modbus有多种连…

Pytorch从入门到精通:二、dataset与datalodar

数据是深度学习的基础,一般来说,数据量越大,训练出来的模型也越强大。如果现在有了一些数据,该怎么把这些数据加到模型中呢?Pytorch中提供了dataset和dataloader,让我们一起来学习一下吧,datase…

5-linux中的定时任务调度

定时任务调度 crond 任务调度概述基本语法常用选项快速入门应用实例crond 相关指令 at 定时任务基本介绍at 命令格式at 命令选项at 时间的定义其他指令 crond 任务调度 crontab 进行 定时任务调度 概述 任务调度:是指系统在某个时间执行的特定的命令或程序 任务…

360T7路由器进行WiFi无线中继教程

360T7路由器进行WiFi中继教程 1. 概述2. 360T7路由器进行WiFi中继实现教程2.1 登录路由器管理界面2.2 选择上网方式2.3 搜索WiFi2.4 连接WiFi2.5 点击确认2.6 在主页面查看网络 1. 概述 中继路由系统由一组中继路由器组成,为不能交换路由信息的路由域提供中继路由。…

Docker consul的容器服务更新与发现

(1)什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&am…

centos 8安装A10显卡驱动-AI人工智能

centos 8安装A10显卡驱动命令:./NVIDIA-Linux-x86_64-535.54.03.run --kernel-source-path/usr/src/kernels/4.18.0-147.el8.x86_64 安装完毕; 测试: 检查驱动版本号: nvidia-smi 验证驱动模块已加载: lsmod | grep nvidia

【腾讯云 Cloud Studio 实战训练营】沉浸式体验编写一个博客系统

文章目录 前言新建工作空间登录(注册)Cloud Studio 账号:进入 Cloud Studio 控制台:配置工作空间参数:确认并创建工作空间:项目搭建 配置nuxt 脚手架运行项目报错信息解决错误脚手架运行预览问题 开启博客代码配置layout首页配置 …

JVM理论(六)执行引擎--垃圾回收

概述 垃圾: 指的是在运行程序中没有任何指针指向的对象垃圾回收目的: 为了及时清理空间使得程序可以正常运行垃圾回收机制: JVM采取的是自动内存管理,即JVM负责对象的创建以及回收,将程序员从繁重的内存管理释放出来,更加专注业务的开发垃圾回收区域: 频繁收集Young区(新生代)…

配置IPv4 over IPv6隧道示例

IPv4 over IPv6隧道: 在IPv4 Internet向IPv6 Internet过渡后期,IPv6网络被大量部署后,而IPv4网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv6网络上创建隧道,从而实现IPv4孤岛的互联,IPv4孤岛能通过IPv6公…

MFC CList 类的使用

MFC提供CList 类; 类CList支持可按顺序或按值访问的非唯一对象的有序列表;CList 列表与双链接列表行为相似; 类型POSITION的变量是列表的关键字;可使用POSITION变量作为循环因子来顺序遍历列表,作为书签来保存位置&am…

自动驾驶数据标注有哪些?

自动驾驶汽车:人工智能(AI)的焦点 人工智能驱动汽车解决方案的市场规模预计到 2025年将增长十倍以上,提升车内体验的商机领域以及 AI 模型的无偏见训练数据的重要性。在本篇中,我们将介绍车外体验的关键组成部分,以及自动驾驶数据…

01背包相关题

题解&#xff1a;dp[j]表示目标和为j时的最大组合种数 class Solution { public:int dp[1005];int findTargetSumWays(vector<int>& nums, int target) {int val;int sum0;for(int i0;i<nums.size();i){sumnums[i];}int wsumtarget;if(w%21){return 0;}else{valw…

区间预测 | MATLAB实现QRGRU门控循环单元分位数回归多输入单输出区间预测

区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRGRU门控循环单元分位数回归分位数回归多输入单输出区间…

微服务Day4——Docker

一、什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0c;环境不一定一致&#xff0c;会…

npm 安装报错:源文本中存在无法识别的标记

npm install -g vue/cli 源文本中存在无法识别的标记。 所在位置 行:1 字符: 16 npm install -g <<<< vue/cli CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException FullyQualifiedErrorId : UnrecognizedToken 解决方…