【环境配置笔记】基于clang15搭建liunx内核代码阅读环境

news2025/2/26 13:19:51

环境:

  1. Toolchain(yocto导出)
  2. Linux5-15,arm64
  3. VS code
  4. clangd15.0.3

1. VScode配置

在VS code / VS code server中配置以下插件:

  • Clangd
  • C/C++
  • C/C++ Extension Pack
  • C/C++ Snippets
  • Code Runner
  • Code Spell Checker
  • compareit
  • DeviceTree
  • Tabnine AI Autocomplete
  • Bracket Pair Colorization Toggler
  • Rainbow Highlighter

2. clangd配置

2.1 下载clangd

从clangd的github(https://github.com/clangd/clangd/releases)下载最新的clangd工具:

image-20221116113013594

然后将其解压到/home/xxx目录下:

unzip clangd-linux-15.0.3.zip

2.2 配置clangd

根据下图的步骤打开json文件,我这里演示的是远程服务器端的配置,如果你本身是linux环境,则需要先点击【用户】,再按第四步来。

image-20221116113419779

打开setting.json文件后,填入以下内容:

这里的"Disabled"

{
    "C_Cpp.default.intelliSenseMode": "linux-gcc-arm64",
    "C_Cpp.intelliSenseEngine": "Disabled",
    "clangd.path": "/home/xxxx/clangd_15.0.3/bin/clangd",
    "clangd.arguments": [
        "--log=verbose",
    ],
}

C/C++插件里的intellisense和clangd是冲突的,如果我们没有手工设置setting.json,当使用vscode打开C文件时时会提示禁止intellisense,不要点击!!!!!因此点击了会有Bug,其中的"Disabled"会被改成"disabled"。

2.3 安装bear

在vscode中使用clangd,要实现精确跳转,需要使用bear分析源码生成compile_commands.json。

执行如下命令安装:

sudo apt instll bear

3.使用bear编译内核【必须先编译】

由于我们使用的是Yocto导出的Toolchain,在激活工具链后需要先使用unset LDFLAGS,然后使用以下命令:

bear -l /usr/lib/x86_64-linux-gnu/bear/libear.so make -j12

由于此时我们使用的是Yocto SDK,里面不包含bear的库,因为我们需要手动指定库的位置。

编译完会生成compile_commands.json。

3.索引Linux源码

在索引源码之前,还需要再Linux文件夹中新建.clangd文件,并填入以下内容:

CompileFlags:
    Remove:
    [
        -mabi=lp64,
    ]

clangd索引失败的原因大部分都是CompileFlags的问题,你可以在索引失败的clangd日志中查看出错的原因,并添加需要移除的CompileFlags。

现在用VS code打开Linux文件夹,打开任意c文件触发索引,你会看到下面的索引进度:

image-20221116122847067

4.跳转测试

这里以main.c进行测试,找到start_kernel函数:

image-20221116123504718

Ctrl+鼠标点击setup_arch函数,可以看到能够正确跳转到arm64架构下的setup_arch函数。

image-20221116123950283

参考:在Ubuntu中搭建嵌入式Linux开发环境

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

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

相关文章

拖拽页面元素+flip动画的案例

先上效果: 实现思路和流程: 基础页面布局 给每个拖动元素加上 draggable"true"ondragstart(开始拖动某个元素时)做出 对应的处理 获得操作的具体元素 给目标元素添加对应的样式 显示透明 增加虚线描边ondragover 被拖动的元素hover到目标元素…

java计算机毕业设计ssm养老管理系统-敬老院系统

项目介绍 1.登录页面要有验证码 2.在健康信息模块中有三个小模块分别是饮食信息、身体信息、医疗常识,饮食信息就是护工每天负责老人的饮食搭配包括;早中晚餐;各种菜谱、图片、注意事项等,身体信息就是老人的各项身体指标,医疗常识就是每一种病对应一种病例还有每天推送更新的关…

互联网获客经验分享(一)

现在的流量都很贵了。特别是公域的流量。在这样的情况下,我们如何从互联网上获取客户?满足我业务的需求呢。 今天为大家分享基础的方法,后续我们会不定期的分享一些互联网软件获客的经验,希望能够帮助到你。 流量的本质 不管是平台方还是用户,流量都是生命线。在这样的…

好心情心理咨询平台:独处≠孤独,独处对心理健康有多重要?

说到独处,有人认为那不就是自己一个人呆着嘛。 非也非也,独处其实不是要求远离人群,而是在信息与情感上与他人无交流,做到无社会互动,与人在网上聊天、打电话可都不能算是独处。 相反,自己一个人在图书馆…

ClickHouse Senior Course Ⅳ

序言 梳理一下ClickHouse的数据库引擎 首先了解下什么是数据库引擎(cuiyaonan2000163.com) 数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引…

[附源码]java毕业设计健身房管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

《无障碍环境认证实施方案》发布

市场监管总局 中国残联关于印发 《无障碍环境认证实施方案》的通知 国市监认证发〔2022〕94号各省、自治区、直辖市和新疆生产建设兵团市场监管局(厅、委)、残联,各有关单位:现将《无障碍环境认证实施方案》印发给你们&#xff0…

【附源码】Python计算机毕业设计团结里小区疫情防控系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【Java|golang】775. 全局倒置与局部倒置

给你一个长度为 n 的整数数组 nums &#xff0c;表示由范围 [0, n - 1] 内所有整数组成的一个排列。 全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目&#xff1a; 0 < i < j < n nums[i] > nums[j] 局部倒置 的数目等于满足下述条件的下标 i 的数目&a…

KEGG信号通路富集分析

KEGG信号通路富集分析 当我们手头有转录组测序后的差异分析数据后&#xff0c;想更进一步的去分析这下差异基因在信号通路富集情况&#xff0c;其中一种办法是使用KEGG网站进行信号通路富集分析。 1. 通过uniprot将Gene name转换为GeneID UniProt网站中的ID mapping具有强大…

关于HTTP/1.1,HTTP/2和HTTP/3的区别与联系

HTTP/1.1 每当说起http/1.1就会想起以前叫外卖的方式&#xff0c;那个时候很多店都没有专门的外卖员&#xff0c;打电话叫外卖&#xff0c;老板那就会叫人送货来&#xff0c;但是这样的方式有一个很大的问题&#xff0c;店员总是忘记放筷子。于是&#xff0c;店员送完外卖以后…

揭秘:如何用主题公园的思路做一款VR高尔夫游戏

作为一个从没玩过高尔夫球的人&#xff0c;我竟然第一次VR游戏中找到了高尔夫球的乐趣。由Mighty Coconut开发的《Walkabout Mini Golf》是这样一款VR游戏&#xff0c;它将迷你高尔夫与各种虚拟场景结合&#xff0c;高尔夫并不是游戏的全部&#xff0c;但你必须进球才能解锁一个…

【Python开发】Flask开发实战:个人博客(四)

Flask开发实战&#xff1a;个人博客&#xff08;四&#xff09;本篇博客将是《Flask开发实战&#xff1a;个人博客》的最后一篇。本篇文章将会详细介绍博客后台的编写。 为了支持管理员管理文章、分类、评论和链接&#xff0c;我们需要提供后台管理功能。通常来说&#xff0c;…

PDF转HTML转换器哪个好用?快看看这里

PDF格式是我们经常使用的文件格式&#xff0c;但是难免会需要将其转换成其他的格式。比如转为HTML&#xff0c;大家是不是对它很陌生呢。其实HTML是一种网页浏览格式&#xff0c;平时我们打开的浏览器页面就是用HTML代码设置而成的。那我来考考大家&#xff0c;你们知道如何将P…

redis缓存雪崩、缓存击穿和缓存穿透还傻傻分不清?看这篇就够了

前言 关于Redis的高频问题&#xff0c;缓存雪崩、缓存击穿和缓存穿透一定少不了&#xff0c;相信大家在面试中都被问到过类似的问题。为什么这些问题一直热门呢&#xff1f;因为我们在使用Redis缓存时&#xff0c;这些问题都是很容易遇到的。接下来我们就来看看这些问题都是怎…

【附源码】Python计算机毕业设计网上宠物店预约系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Excel打开第二个文件很慢的解决方法

简介&#xff1a; 该问题具体表现为&#xff1a;打开第一个Excel文件后&#xff0c;在不关闭它的情况下接着打开第二个Excel文件&#xff0c;第二个Excel文件会延迟几秒之后才会正常打开。 注意前提是第一个Excel文件打开速度是正常的&#xff0c;否则本解决方案大概率对你无效…

Allegro分Partition操作指导

Allegro分Partition操作指导 Allegro支持多人协同操作,可以将版本分割成很多个部分,让多人操作,具体操作步骤如下 Change editor 选择Team Design,点击OK 点击place design Partition,选择Create Patitions 空白的地方右击选择 ADD Rectangle 选择需要分割的区域 除…

可观测性-可视化-Grafana热图Heatmap

文章目录可观测性-可视化-Grafana热图Heatmap前言选项可观测性-可视化-Grafana热图Heatmap 前言 Heatmap&#xff08;热图&#xff09;的用途&#xff0c;在Grafana官网是这样描述的&#xff1a;使用热图&#xff0c;将允许您查看随时间变化的直方图。 所以要使用热图的前提…

数据类型优化

schema与数据类型优化 数据类型优化原则 最小数据类型 尽量使用可以正确存储数据的最小数据类型&#xff0c;更小的数据类型通常更快&#xff0c;因为它们占用更少的磁盘、内存和CPU缓存。 更简单的数据类型 简单数据类型的操作通常需要更少的CPU周期 1.整型比字符操作代…