ubuntu+clangd+vscode 实现项目代码快速跳转(如: Linux 内核源码)

1. 准备工作

  1. 虚拟机 ubuntu 环境,笔者用的是 ubuntu20.04。
  2. windows 安装好 vscode 软件。

2. 配置过程

2.1 vscode远程连接 ubuntu

  1. ubuntu 虚拟机开启 ssh 服务
sudo apt install openssh-server
sudo service ssh start
  1. vscode 安装 remote-ssh 插件

在这里插入图片描述

  1. vscode 远程连接 ubuntu

在这里插入图片描述

输入 ssh 你的ubuntu用户名@你的ubuntu IP地址,回车确认。在弹出的选项中默认选择第一项。

在这里插入图片描述
第一项选择后,会在右下角弹窗,直接点击 connect。
在这里插入图片描述

弹出输入密码,输入密码后会再次弹出输入密码确认。

在这里插入图片描述

点击 Open Folder,打开你在 Ubuntu 上的 Linux 内核源码路径,或者是你的工程源码路径。就可以进行代码的编辑查看操作,接下来配置 clangd。

在这里插入图片描述

2.2 clangd 的配置

2.2.1 安装 clangd

  1. ubuntu 上安装 clangd
sudo apt install clangd

安装完成后确认是否成功:

clangd --version
  1. vscode 上安装 clangd 插件

在这里插入图片描述

2.2.2 vscode 配置 clangd 插件

  1. 添加配置参数,一个 item 一个 item 的添加。
–compile-commands-dir=${workspaceFolder}
–background-index
–completion-style=detailed
–header-insertion=never
-log=info

在这里插入图片描述

  1. 加入 clangd 的绝对路径。

在这里插入图片描述

这里可在 ubuntu 上确认 clangd 的安装路径。

whereis clangd

在这里插入图片描述

3. 使用

3.1 CMake 组织的项目

需要定义 CMAKE_EXPORT_COMPILE_COMMANDS
示例:

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1

3.2 Makefile 组织的项目

需要先安装 bear。在编译项目时,make 前面添加 bear。

sudo apt-get install bear

示例:

bear make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig -j$(nproc)
bear make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -j$(nproc)
bear make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j$(nproc)
bear make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage LOADADDR=0x60003000 -j$(nproc)

4. 小结

大型项目,跳转很快,阅读代码效率飞起。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PLYExporter 是用于导出 Three.js 场景中几何体数据为 PLY 格式的类。

demo 案例 PLYExporter 是用于导出 Three.js 场景中几何体数据为 PLY 格式的类。下面是关于 PLYExporter 的属性、方法、入参和出参的讲解: 属性 (Properties): None: 通常情况下,PLYExporter 没有公开的属性,它主要是通过方法来执行导出…

Radash一款JavaScript最新的实用工具库,Lodash的平替!

文章目录 Lodash 的痛点进入正题--Radash特点 举例几个常用的api 一说lodash应该大部分前端同学都知道吧,陪伴我们好多年的JavaScript工具库,但是自从 ES6 出现后就慢慢退出前端人的视线,能ES6写的代码绝对不会用Lodash,也不是完全…

设计模式7--建造者模式

定义 案例一 案例二 优缺点

STM32 软件I2C方式读取AS5600磁编码器获取角度例程

STM32 软件I2C方式读取AS5600磁编码器获取角度例程 🔖本例程使用正点原子例程作为工程模板创建。 📘 硬件电路部分 🌿原理图部分: 🌿PCB布线和电路 ✨注意事项:有些硬件需要I2C上拉,否则检…

学习transformer模型-Input Embedding 嵌入层的简明介绍

今天介绍transformer模型的Input Embedding 嵌入层。 背景 嵌入层的目标是使模型能够更多地了解单词、标记或其他输入之间的关系。 从头开始嵌入Embeddings from Scratch 嵌入序列需要分词器tokenizer、词汇表和索引,以及词汇表中每个单词的三维嵌入。Embedding a s…

2核2G服务器优惠价格轻量61元一年,CVM价格313元15个月

腾讯云2核2G服务器多少钱一年?轻量服务器61元一年,CVM 2核2G S5服务器313.2元15个月,轻量2核2G3M带宽、40系统盘,云服务器CVM S5实例是2核2G、50G系统盘。腾讯云2核2G服务器优惠活动 txybk.com/go/txy 链接打开如下图:…

Java 学习和实践笔记(51):基本的冒泡排序算法和优化的冒泡排序算法

常见的算法的可视动画演示效果可在这个网址查看: visualising data structures and algorithms through animation - VisuAlgo 基本的冒泡排序算法很简单,假定有10个数需要排序,那么就需要跑10轮,在每一轮里,都依次进…

攻防世界-Web(catcat-new)

任意文件读取漏洞是指攻击者通过在应用程序中输入非法的文件名或路径,从而获取未授权的文件读取权限的漏洞。攻击者可以利用此漏洞来读取系统文件、敏感数据或其他用户数据。这种漏洞通常是由于程序没有正确地检查用户的输入而引起的。建议开发人员在编写应用程序时…

Android adb ime 调试输入法

目录 前言列出所有输入法仅列出输入法 id列出所有输入法的所有信息 启用/禁用 输入法启用输入法禁用输入法 切换输入法还原输入法 前言 安装多个输入法后&#xff0c;可以在设置里进行切换。 既然是开发&#xff0c;能用命令就就命令~ ime 帮助说明&#xff1a; ime <c…

HarmonyOS 应用开发之Stage模型绑定FA模型ServiceAbility

本小节介绍Stage模型的两种应用组件如何绑定FA模型ServiceAbility组件。 UIAbility关联访问ServiceAbility UIAbility关联访问ServiceAbility和UIAbility关联访问ServiceExtensionAbility的方式完全相同。 import common from ohos.app.ability.common; import hilog from o…

vue系统——v-html

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>v-html指令</title> </head> <body&…

快速上手Spring Cloud 十七:深入浅出的学习之旅

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

【SpringCloud】认识微服务

目 录 一.服务架构演变单体架构分布式架构服务治理微服务总结 二.微服务技术对比微服务结构微服务技术对比企业需求 三.SpringCloud 一.服务架构演变 单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a; 架…

JavaScript高级 —— 学习(三)

一、深入面向对象 分为面向过程和面向对象两种&#xff0c;面向过程是以步骤来划分问题&#xff0c;在这儿不做过多描述。 &#xff08;一&#xff09;面向对象介绍 把事务分解成一个个对象&#xff0c;由对象之间分工合作&#xff0c;面向对象是以对象功能来划分问题&#…

本地项目上传到GitHub

本文档因使用实际项目提交做为案例&#xff0c;故使用xxx等字符进行脱敏&#xff0c;同时隐藏了部分输出&#xff0c;已实际项目和命令行输出为准 0、 Git 安装与GitHub注册 1&#xff09; 在下述地址下载Git&#xff0c;安装一路默认下一步即可。安装完成后&#xff0c;随便…

开源知识库平台Raneto--使用Docker部署Raneto

文章目录 一、Raneto介绍1.1 Raneto简介1.2 知识库介绍 二、阿里云环境2.1 环境规划2.2 部署介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Raneto镜像五、部署Raneto知识库平台5.1 创建挂载目录5.2 编辑config.js文件5.…

金三银四面试题(八):JVM常见面试题(2)

今天我们继续探讨常见的JVM面试题。这些问题不比之前的问题庞大&#xff0c;多用于面试中​JVM部分的热身运动&#xff0c;开胃菜&#xff0c;但是大家已经要认真准备。 JRE、JDK、JVM 及JIT 之间有什么不同&#xff1f; JRE 代表Java 运行时&#xff08;Java run-time&#…

Vue 05 Vuex

Vue 学习 Vue 05 vuex01 介绍02 工作原理&#xff08;原理图&#xff09;使用 03 案例求和补充HTML 纯vue实现vuex使用 04 getters配置项05 mapState 与 mapGetters补&#xff1a;ES6语法mapState使用mapGetters总结 06 mapActions 与 mapMutationsmapMutationsmapActions总结 …

最新Java面试题1【2024中级】

互联网大厂面试题 1&#xff1a;阿里巴巴Java面试题 2&#xff1a;阿里云Java面试题-实习生岗 3&#xff1a;腾讯Java面试题-高级 4&#xff1a;字节跳动Java面试题 5&#xff1a;字节跳动Java面试题-大数据方向 6&#xff1a;百度Java面试题 7&#xff1a;蚂蚁金服Java…

深入理解 Hadoop 上的 Hive 查询执行流程

在 Hadoop 生态系统中&#xff0c;Hive 是一个重要的分支&#xff0c;它构建在 Hadoop 之上&#xff0c;提供了一个开源的数据仓库系统。它的主要功能是查询和分析存储在 Hadoop 文件中的大型数据集&#xff0c;包括结构化和半结构化数据。Hive 在数据查询、分析和汇总方面发挥…