Linux系统c/c++开发环境配置

安装LLVM全家桶及CMAKE

输入以下命令,安装clang,clangd,lldb及cmake。
sudo apt install clang clangd lldb cmake

yukeyang@DESKTOP-QFK2F47:~/myfiles/test$ sudo apt install clang clangd lldb cmake
[sudo] password for yukeyang: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
cmake is already the newest version (3.16.3-1ubuntu1.20.04.1).
The following additional packages will be installed:binfmt-support clang-10 clangd-10 cpp-9 g++-9 gcc-10-base gcc-9 gcc-9-base gfortran-9 lib32gcc-s1 lib32stdc++6 libasan5 libatomic1 libc-dev-bin libc6 libc6-dev libc6-i386 libcc1-0 libclang-common-10-devlibclang-cpp10 libgc1c2 libgcc-9-dev libgcc-s1 libgfortran-9-dev libgfortran5 libgomp1 libitm1 liblldb-10 liblsan0 libncurses-dev libncurses6 libncursesw6 libobjc-9-dev libobjc4 libomp-10-dev libomp5-10 libpfm4libquadmath0 libstdc++-9-dev libstdc++6 libtinfo-dev libtinfo6 libtsan0 libubsan1 libz3-4 libz3-dev lldb-10 llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools python3-lldb-10
Suggested packages:clang-10-doc gcc-9-locales g++-9-multilib gcc-9-doc gcc-9-multilib gfortran-9-multilib gfortran-9-doc glibc-doc ncurses-doc libomp-10-doc libstdc++-9-doc llvm-10-doc
The following NEW packages will be installed:binfmt-support clang clang-10 clangd clangd-10 lib32gcc-s1 lib32stdc++6 libc6-i386 libclang-common-10-dev libclang-cpp10 libgc1c2 liblldb-10 libncurses-dev libobjc-9-dev libobjc4 libomp-10-dev libomp5-10 libpfm4libtinfo-dev libz3-4 libz3-dev lldb lldb-10 llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools python3-lldb-10
The following packages will be upgraded:cpp-9 g++-9 gcc-10-base gcc-9 gcc-9-base gfortran-9 libasan5 libatomic1 libc-dev-bin libc6 libc6-dev libcc1-0 libgcc-9-dev libgcc-s1 libgfortran-9-dev libgfortran5 libgomp1 libitm1 liblsan0 libncurses6libncursesw6 libquadmath0 libstdc++-9-dev libstdc++6 libtinfo6 libtsan0 libubsan1
27 upgraded, 28 newly installed, 0 to remove and 718 not upgraded.
Need to get 115 MB of archives.
After this operation, 421 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates/main amd64 libc6-dev amd64 2.31-0ubuntu9.14 [2,519 kB]
...

安装vscode插件

安装以下vscode插件(CMake, CMake Tools, CodeLLDB, clangd)
在这里插入图片描述
其中CodeLLDB需要下载一个文件,几乎是一定会下载失败的。
在这里插入图片描述
在这里插入图片描述
超时之后点击弹出来的消息,手动下载,然后再手动进行安装。
在这里插入图片描述

开始

随便找一个空文件夹打开,然后Ctrl+Shift+P或者你自定义的快捷键打开下拉菜单,搜索cmake,选择Quick Start:
在这里插入图片描述
给你的项目起个名字,类型选择Executable,第一次打开cmake可能还会问你一些编译套件的选择问题,选择clang即可,记得看清楚后缀免得用错。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
clangd报警无法找到编译数据库。
在这里插入图片描述
而这个数据库其实就在cmake生成的build文件夹里。
在这里插入图片描述
我们要让clangd识别项目的编译数据库,因此我们设置clangd参数。打开设置,搜索clangd,在Arguments配置项中输入参数–compile-commands-dir=${workspaceFolder}/build,然后点确定。
在这里插入图片描述
在这里插入图片描述
这个参数就是告知clangd我们的编译数据库在工作区根目录的build文件夹下。

重启VSCode,再次查看clangd输出,发现成功读入了参数,并且没有报错信息,同时能够使用cmake输入的编译指令即为配置成功。
在这里插入图片描述

运行与调试

按一下底部菜单中的build键,看看我们生成的可执行文件在哪里(一般就在build下面):
在这里插入图片描述

按F5键,VSCode会报错,同时在根目录下生成一个.vscode文件夹以及launch.json。打开这个json文件,将其中唯一一个需要我们配置的(也是本文第二次跟配置文件打交道)program项改为cmake生成的可执行文件的位置(按照惯例,根目录的名字和项目的名字应该是同一个,否则就需要手动指定)。
在这里插入图片描述
再按一次F5,终端返回了一句亲切的Hello, from select!。
在这里插入图片描述
上个断点试试:
在这里插入图片描述
至此,已经搭建起了一个简单的开发环境并且开始快乐地写代码了。

参考文献

[1] 几乎无痛的VSCode+clangd+lldb+cmake配置C/C++开发环境指南

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

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

相关文章

2024-02-13 Unity 编辑器开发之编辑器拓展4 —— EditorGUIUtility

文章目录 1 EditorGUIUtility 介绍2 加载资源2.1 Eidtor Default Resources2.2 不存在返回 null2.3 不存在则报错2.4 代码示例 3 搜索框查询、对象选中提示3.1 ShowObjectPicker3.2 PingObject3.3 代码示例 4 窗口事件传递、坐标转换4.1 CommandEvent4.2 GUIPoint 和 ScreenPoi…

英伟达依托AI市值超谷歌,这波AI浪潮,你赶上了吗

随着人工智能(AI)技术的迅猛发展,全球科技行业的竞争格局正在发生着翻天覆地的变化。PS:如果你需要使用ChatGPT,可以参考这篇文章:【新手向】ChatGPT入门指南 - 订阅GPT4之前必须了解的十件事情 英伟达,一家以其高性能…

JavaWeb:SpringBootWeb登录认证 --黑马笔记

1.登录认证 登录认证,如果只是简单的判断用户名和密码在数据库中是否对应相等来实现这个需求是有问题的,它只是徒有其表,我们不登陆也可以访问后端系统页面,真正的登录功能应该是:登陆后才能访问后端系统页面&#xf…

MySQL-运维

一、日志 1.错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关性息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的&#xf…

算法学习——LeetCode力扣二叉树篇5

算法学习——LeetCode力扣二叉树篇5 513. 找树左下角的值 513. 找树左下角的值 - 力扣(LeetCode) 描述 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 示例 1: 输入: r…

C++ Primer 第 5 版 第 6 章习题答案

文章目录 6.16.26.36.46.56.66.76.86.106.116.126.136.146.156.166.176.186.196.206.216.226.236.246.256.266.276.286.296.306.316.326.336.346.356.366.376.386.396.406.416.426.436.446.456.466.476.486.496.506.516.526.536.546.556.56 6.1 形参出现在函数定义的地方&…

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-软件定时器

目录 一、软件定时器基本概念二、软件定时器运行机制三、软件定时器状态四、软件定时器模式五、软件定时器开发流程六、软件定时器使用说明七、软件定时器接口八、代码分析(待续...)坚持就有收获 一、软件定时器基本概念 软件定时器,是基于系…

论文介绍 VolumeDiffusion

论文介绍 VolumeDiffusion: Flexible Text-to-3D Generation with Efficient Volumetric Encoder 关注微信公众号: DeepGo 源码地址: https://github.com/tzco/VolumeDiffusion 论文地址: https://arxiv.org/abs/2312.11459 VolumeDiffusion模型是一个从…

我们需要延迟满足吗?

延迟满足,可能是当代成功学和鸡汤里面,最常见的一个概念了。 很多人都会告诉你:要学会延迟满足,培养延迟满足能力,这样你才能成为一个脱离低级趣味的人,取得更高的成就。 他们同时还会把延迟满足跟「即时满…

读千脑智能笔记12_阻止人类灭绝

1. 阻止人类灭绝 1.1. 宇宙中唯一知道这些的物体,唯一知道宇宙存在的物体,是我们的大脑 1.2. 如果没有关于某个事物的知识,我们能说这个事物就一定存在吗? 1.2.1. 我们的大脑扮演着这样一个独特的角色,这很令人着迷…

Python算法题集_LRU 缓存

Python算法题集_LRU 缓存 题146:LRU 缓存1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【队列字典】2) 改进版一【有序字典】3) 改进版二【双向链表字典】 4. 最优算法 本文为Python算法题集之一的代码示例 题146:LRU …

小白速成法:剖析一个Android项目以快速上手

这是一个基于Tasmota的设备、用MQTT协议来通信控制的安卓应用程序。支持ON/OFF命令插座和基本的RGB LED控制。 源码点击此处 只需要关注SmartController-main\app\src的代码 项目解压之后如图 只需要关注“app”文件夹里的东西即可,“gradle”是配置文件&#xf…

MATLAB Coder从入门到放弃

一、MATLAB Coder入门 1 MATLAB Coder是什么 从 MATLAB 代码生成 C 和 C 代码 MATLAB Coder™ 可从 MATLAB 代码生成适用于各种硬件平台(从桌面计算机系统到嵌入式硬件)的 C 和 C 代码。它支持大多数 MATLAB 语言和广泛的工具箱。您可以将生成的代码作…

Android14音频进阶:MediaPlayerService如何启动AudioTrack 下篇(五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

比较6*6范围内8个点425个结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有6个节点,训练集AB各由6张二值化的图片组成,让A中有8个点,让B全是0,收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 假设这个6*6的结构的行和列都…

C++进阶(十六)特殊类设计

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象三、…

力扣1122. 数组的相对排序(哈希表)

Problem: 1122. 数组的相对排序 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.利用arr2创建一个无序映射(map集合),以其中的元素作为键,值默认设置为0; 2.扫描arr1数组统计arr2元素在其中的个数(将个…

单调队列优化DP问题

目录 1.滑动窗口 2.最大子序和 3.旅行问题 4.烽火传递 5.绿色通道 6.修剪草坪 7.理想的正方形 1.滑动窗口 154.给定一个大小为 n≤106 的数组。 有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向…

游泳时可以听歌的耳机有哪些?戴游泳耳机有哪些好处?

游泳和跑步在某种程度上相似,特别是在短距离冲刺时,大脑似乎变得空白,而在中长距离的有氧运动中,身体感到疲劳,但大脑却异常清晰,时间却显得格外漫长。如何打发时间,让游泳锻炼变得不无聊&#…

力扣面试题 16.21. 交换和(哈希表)

Problem: 面试题 16.21. 交换和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.分别求取array1与array2数组每一个元素的和(sum1与sum2)并同时将array2的元素存入一个set集合中; 2.如果sum1和sum2的和为奇数,则不…