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…

[机缘参悟-156] :一个软件架构师对佛学的理解 -22- 佛教经典的主要思想之《心经》:心经不是唯心主义,更不是迷信,摆脱对佛教的误解

目录 一、概述 二、位置 三、主要思想 3.1 主要思想 3.2 心经的本质 3.3 心经与唯心主义 3.4 心经与心理学 四、修行方法 五、现实意义 一、概述 心经,全称《般若波罗蜜多心经》,是佛教中最重要的经典之一,属于般若波罗蜜多&#x…

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

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

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

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

Python面试题1-6

1. 请解释Python中的装饰器是什么,以及如何使用装饰器? 装饰器是Python中一种特殊的语法,用于修改或增强函数的功能。它们允许在不修改原始函数代码的情况下,通过将函数作为参数传递给另一个函数来修改其行为。装饰器通常以符号开…

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 语言和广泛的工具箱。您可以将生成的代码作…

老兵(10)

每个人有每个人的的使命,即便还没有清晰的意识到,即便自己注定看不到所作的一切的结果,即便将来不会有人记得。 甚至,不论此间还是彼端,都不免常常会怀疑所知所为的意义。 我们可以把这个叫做觉悟,或者信念…

free pascal:fpwebview 组件简单易用

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\browser_cli 修改 winbuild.bat 如下 echo offecho Set up FPC executable path. set fpcexeD:\lazarus…

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

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