首页 > 编程语言 >内核源码+vscode+bear+clang实现函数任意跳转,无缝跳转,无缝阅读,无缝开发

内核源码+vscode+bear+clang实现函数任意跳转,无缝跳转,无缝阅读,无缝开发

时间:2024-11-10 17:57:58浏览次数:1  
标签:none aarch64 跳转 bear 源码 内核 linux 无缝

一、准备工作

1、内核源码版本选择

务必有一份能编译通过的《内核源码》,本次选择5.10版本的。

#说明:5.10版本的《内核源码》里,在 scripts/clang-tools 目录下有《gen_compile_commands.py》文件,这个脚本也能生成《compile_commands.json》文件。
已确定4.19版本没有,请尽量选择高版本的内核源码。

2、VScode

2.1、安装 Clangd 插件,确保安装到已经远程连接的虚拟机里。

以下简称:VSC
经过别的文章提示,建议务必禁止vsc插件为:<C/C++ Extension>。

二、clang+bear

2.1、安装bear

sudo apt-get install -y bear
bear --version #验证bear有无安装好,出现版本号则正常

2.2、内核源码目录操作

进入该内核源码目录

bear make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rockchip_linux_defconfig
#或者用下面这个
bear make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rockchip_defconfig

bear make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- -j8

2.3、产物

会在kernel文件夹下生成 compile_commands.json 文件。

2.4、VSC操作

直接打开你的vscode,用vsc仅仅打开内核源码所在目录,然后任意点击一个C代码文件将触发clang,在VSC的 终端 页码里点击“输出”,然后选择“clangd”,即可看到触发clang的过程。同时,在VSC的左下角将看到类似如下提示:

# 数字可以不是下面所写的,仅供案例参考
<转圈> indexing:98/3695

当索引结束,即可使用。

2.5、工程目录操作

复制一份 compile_commands.json 文件到当前工程目录下即可。


三、clang+源码内置脚本

3.1、内核源码目录操作

​ 1.1、进入该内核源码目录,弄配置文件

make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rockchip_linux_defconfig

​ 1.2、进入该内核源码目录,编译内核源码

make ARCH=arm64 CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- -j8

3.2、产物

# 在内核源码所在目录下执行:
python scripts/clang-tools/gen_compile_commands.py
# 生成 compile_commands.json 文件

3.4、VSC操作

直接打开你的vscode,用vsc仅仅打开内核源码所在目录,然后任意点击一个C代码文件将触发clang,在VSC的 终端 页码里点击“输出”,然后选择“clangd”,即可看到触发clang的过程。同时,在VSC的左下角将看到类似如下提示:

# 数字可以不是下面所写的,仅供案例参考
<转圈> indexing:98/3695

当索引结束,即可使用。

3.5、工程目录操作

复制一份 compile_commands.json 文件到当前工程目录下即可。


四、参考文档

1、《【vscode基于clangd实现Android/Linux代码跳转】》
https://huaweicloud.csdn.net/654861dd91098a1041274b84.html

2、《看代码神器:vscode+clangd轻松实现linux内核代码跳转(图文并茂)》

https://blog.csdn.net/ludaoyi88/article/details/135051470

3、《VSCode+clangd阅读linux内核源码》

https://blog.csdn.net/weixin_40209493/article/details/128175003?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-128175003-blog-135051470.235v43pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.1&utm_relevant_index=1

标签:none,aarch64,跳转,bear,源码,内核,linux,无缝
From: https://www.cnblogs.com/salty-pineapple/p/18538262

相关文章

  • 【最新原创毕设】基于移动端的助农电商系统+08655(免费领源码)可做计算机毕业设计JAVA、
    基于移动端的助农电商系统的设计与实现摘要近年来,电子商务的快速发展引起了行业和学术界的高度关注。基于移动端的助农电商系统旨在为用户提供一个简单、高效、便捷的农产品购物体验,它不仅要求用户清晰地查看所需信息,而且还要求界面设计精美,使得功能与页面完美融合,从而提升......
  • 【计算机毕业设计选题推荐】基于springboot湖北汽车工业科技学院校园二手商品交易系统
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 【计算机毕设选题推荐】基于javaee的超市外卖系统的设计与实现 【附源码+部署+讲解】
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • (附源码)NodeJS高校篮球队管理系统-计算机毕设 27088
    NodeJS高校篮球队管理系统目录1绪论1.1研究背景1.2国内外研究现状1.3论文结构与章节安排2平台分析2.1系统可行性分析2.1.1硬件可行性分析2.1.2软件可行性分析2.1.3经济可行性2.1.4 操作可行性2.2系统功能分析2.3 系统用例分析2.4本章小结3......
  • 毕业设计-基于多维分类的知识管理系统源码+10000字论文
    项目简介基于SpringBoot的多维分类知识管理系统,是一个旨在提高知识分享和展示效率的信息化平台。该系统主要服务于两类用户:管理员和普通用户。管理员拥有全面的管理权限,能够对用户信息、知识分类和知识信息进行添加、修改、删除和查询操作。此外,管理员还可以添加新的知识点,从......
  • 毕业设计-健身房管理系统源码+10000字论文
    项目简介本健身房管理系统是一款基于B/S架构的信息化管理平台,采用SpringBoot框架和MySQL数据库进行设计与开发,旨在提高健身房管理的系统化和规范化水平。系统主要服务于三类用户:管理员、会员和员工,为他们提供了功能丰富且界面清晰的操作环境。管理员拥有系统的最高权限,能够......
  • 毕业设计-在线教育系统源码+10000字论文
    项目简介本在线教育系统通过深入分析现有在线教育管理的不足,设计并实现了一个全面、高效的计算机管理方案。系统采用B/S架构,利用SpringBoot框架和MYSQL数据库进行开发,确保了系统的稳定性和可靠性。系统功能丰富,界面清晰,操作简单,实现了在线教育管理的系统化和规范化。管理员......
  • Java 基于 SpringBoot+Vue 的水果在线销售系统开发(附源码,文档)
    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌......
  • 基于STM32的温室自主灌溉系统(论文+源码)
    1.总体方案设计本课题为基于STM32的温室自主灌溉系统,通过查阅多种文献和的设计了如图2.1所示的温室自主灌溉系统总体架构,整个系统在器件上包括了主控制器STM32F103,温度传感器DS18B20,土壤湿度传感器YL-69,光敏电阻,显示器LCD1602,继电器,LED灯,蜂鸣器,水泵,按键等等。在功能上,实现了......
  • 基于单片机的直流稳压电源的设计(论文+源码)
    1.系统方案设计在本次直流稳压电源的设计中,其关键指标如下:系统输入电压220V交流系统输出直流0到12V可调,步进可以达到0.1V电流最大输出可以到2A具有短路保护功能可以通过液晶或者数码管等显示设备显示当前输出电压2.电路图3.实物或者仿真联系我......