当前位置:首页 » 《随便一记》 » 正文

VSCode使用clangd构建Linux驱动开发环境

21 人参与  2024年02月13日 16:46  分类 : 《随便一记》  评论

点击全文阅读


文章目录

前言一、VSCode安装clangd插件并搭建环境1、安装插件2、禁用或卸载Microsoft C/C++ Intelligence3、安装clangd安装包4、修改拓展设置 二、使用bear构建源码的 compile_commands.json文件三、修改compile_commands.json文件四、驱动程序和应用程序的编写五、配置文件的添加六、其它(可选)参考


前言

最初在使用Linux内核源码进行驱动开发时,由于没有代码补全、自动提示等功能写起来十分不方便,虽然有人使用Source Insight来阅读源码,但是我用起来还是感觉怪怪的,有时间同一个函数会找到很多的定义,不便判断。在调用层次方面,还是clangd更好用。


一、VSCode安装clangd插件并搭建环境

Clangd 是一个基于 Clang 的语言服务器,它提供了代码智能感知和导航功能。通过与 VSCode 集成,可以实现以下功能:

代码补全和自动提示:Clangd 可以根据代码上下文提供准确的补全建议和自动提示,帮助开发者快速编写代码。代码跳转和导航:Clangd 可以识别代码中的符号引用、函数调用等,并支持跳转到定义、查看声明等操作,便于阅读和理解复杂的内核源代码。实时错误和警告检查:Clangd 可以实时检查代码中的语法错误、潜在问题和警告信息,帮助开发者及早发现和修复问题。重构支持:Clangd 提供了一些重构功能,如重命名变量、提取函数等,可以简化代码重构的过程。

1、安装插件

在这里插入图片描述

2、禁用或卸载Microsoft C/C++ Intelligence

因为和clangd有冲突,这种语法高亮的插件往往只能二者存其一。
在这里插入图片描述

3、安装clangd安装包

VSCode clangd插件本身是不能运行的,它还需要clangd的环境,所以接下来安装clangd。

下载地址
在Ubuntu中最好不要使用apt安装,因为版本比较旧,建议下载后手动安装。
在这里插入图片描述
解压后,
将bin文件夹下的 clangd 移动到 /usr/bin 目录下,
将lib文件夹下的所有移动到 /usr/local/lib 目录下。
之后打开终端,键入:

clangd --version

在这里插入图片描述
就算成功。

4、修改拓展设置

修改正确clangd路径:
在这里插入图片描述

二、使用bear构建源码的 compile_commands.json文件

如果没有bear的话就安装一下:

sudo apt install bear

我使用的是韦东山的imx6ull-qemu模拟开发板的内核源码,内核编译命令如下:

ml@ml-virtual-machine:~$ cd linux-4.9.88ml@ml-virtual-machine:~$ make mrproperml@ml-virtual-machine:~$ make 100ask_imx6ull_qemu_defconfigml@ml-virtual-machine:~$ bear make zImage -j4 //编译zImage 内核ml@ml-virtual-machine:~$ make clean  // 清除生成文件

倒数第二条带有bear的指令就是生成compile_commands.json文件的。

compile_commands.json文件记录了你的工程是如何构建的,使用到了哪些源码文件,源码文件之间的包含关系,引用路径之类的,这些可以帮助clangd构建符号关系索引库。
在这里插入图片描述
在这里插入图片描述

三、修改compile_commands.json文件

目前,这个文件还不能用,需要修改编译工具链成对应的工具链,比如我这里需要全局替换:

"cc"  -->  "arm-linux-gnueabihf-gcc"

在这里插入图片描述

保存后关闭VSCode,如果有.cache文件夹的话,删除掉它。之后重新用VSCode打开源码目录,随便打开一个.c文件,clangd便自动开始索引文件了,索引文件会保存在 .cache 目录下。
在这里插入图片描述

如果这个过程特别快,只有几秒钟的话,那就是上述步骤有错误。正常来说,这个索引过程会有几分钟。

在这里插入图片描述

四、驱动程序和应用程序的编写

对于驱动程序来说,我的方法是在当前源码目录下新建一个文件夹,在这个文件夹下进行驱动程序的编写,这样跳转、补全之类的都比较方便。
在这里插入图片描述

然后保存工作区,方便下次打开:
在这里插入图片描述

对应用程序来说,不便放在源码工作区当中,可以像这样单独打开一个用于编写应用程序:
keyi

驱动程序写完后,拷贝到应用程序所在目录的驱动程序文件中。
在这里插入图片描述

此后,便可以方便快捷的编写驱动程序和应用程序了。

五、配置文件的添加

clangd 是集成了 clang-tidy 和 clang-format 的,所以二者的配置文件也能在clangd下面使用。比如,我根据我的喜好更改了 format 格式和它的函数参数提示。
在这里插入图片描述

.clangd 文件

# 提示嵌入,不使用函数参数嵌入提示InlayHints:    Designators: Yes    Enabled: Yes    ParameterNames: No    DeducedTypes: YesCompileFlags:    Add: [-xc, -Wall]

.clang-format 文件

BasedOnStyle: LLVMUseTab: NeverIndentWidth: 4TabWidth: 4# 最外层大括号换行# BreakBeforeBraces: LinuxBreakBeforeBraces: AllmanAllowShortIfStatementsOnASingleLine: trueIndentCaseLabels: falseColumnLimit: 120

六、其它(可选)

如果你已经配置完成,就不要在意这里的设置。

在这里插入图片描述

参考

使用VSCode clangd插件进行linux内核代码阅读和嵌入式开发


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/68385.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 贵妃每天只想当咸鱼小说(萧兮兮洛清寒)(贵妃每天只想当咸鱼)整本+后续+结局在线阅读
  • 云纾君迟玉:+后续+番外半溪明月枕清风无删减小说在线无广告高口碑小说
  • 新章速递既负如来又负卿是什么小说(莫司淮唐乐薇)完本阅读无广告(莫司淮唐乐薇)
  • 林齐(林齐)火爆小说全集免费阅读_反转传奇林齐:结局+番外无弹窗最新章节笔趣阁(林齐)
  • 萧兮兮洛清寒小说(贵妃每天只想当咸鱼)起点章节+全篇阅读热门作品预订
  • 穿成塌房顶流,我靠爆料翻红(陈昭陈莹静)_穿成塌房顶流,我靠爆料翻红
  • (番外)+(全文)谢青霄林相宜(八零奉子成婚,死对头成了妻管严:全文+结局+番外)全文免费阅读无弹窗大结局_(谢青霄林相宜)最新章节列表_笔趣阁(八零奉子成婚,死对头成了妻管严:全文+结局+番外)
  • 傅修言沈知穗小说(沈知穗傅修言)小说***下载_章节前文+后续(傅修言沈知穗)
  • 陆译林初夏小说(替身攻略失败后摆烂了)全文免费阅读_(替身攻略失败后摆烂了)陆译林初夏小说最新章节列表
  • 全书浏览说好摸鱼打游戏,你爆杀华尔街?(王文斌方幻)_说好摸鱼打游戏,你爆杀华尔街?(王文斌方幻)全书结局
  • (重生后高傲妻子我不爱了)重生后高傲妻子我不爱了(梁言彻尹暖芸)无套路无弹窗全部章节列表
  • (番外)+(全文)傅修言沈知穗:番外+全文+后续(沈知穗傅修言)完整版小说阅读_傅修言沈知穗:番外+全文+后续免费阅读_笔趣阁(沈知穗傅修言)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1