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

这篇具有很好参考价值的文章主要介绍了VSCode使用clangd构建Linux驱动开发环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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


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

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

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

1、安装插件

vscode clangd,vscode,linux,驱动开发

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

因为和clangd有冲突,这种语法高亮的插件往往只能二者存其一。
vscode clangd,vscode,linux,驱动开发

3、安装clangd安装包

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

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

clangd --version

vscode clangd,vscode,linux,驱动开发
就算成功。

4、修改拓展设置

修改正确clangd路径:
vscode clangd,vscode,linux,驱动开发

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

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

sudo apt install bear

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

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

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

compile_commands.json文件记录了你的工程是如何构建的,使用到了哪些源码文件,源码文件之间的包含关系,引用路径之类的,这些可以帮助clangd构建符号关系索引库。
vscode clangd,vscode,linux,驱动开发
vscode clangd,vscode,linux,驱动开发

三、修改compile_commands.json文件

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

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

vscode clangd,vscode,linux,驱动开发

保存后关闭VSCode,如果有.cache文件夹的话,删除掉它。之后重新用VSCode打开源码目录,随便打开一个.c文件,clangd便自动开始索引文件了,索引文件会保存在 .cache 目录下。
vscode clangd,vscode,linux,驱动开发

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

vscode clangd,vscode,linux,驱动开发

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

对于驱动程序来说,我的方法是在当前源码目录下新建一个文件夹,在这个文件夹下进行驱动程序的编写,这样跳转、补全之类的都比较方便。
vscode clangd,vscode,linux,驱动开发

然后保存工作区,方便下次打开:
vscode clangd,vscode,linux,驱动开发

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

驱动程序写完后,拷贝到应用程序所在目录的驱动程序文件中。
vscode clangd,vscode,linux,驱动开发

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

五、配置文件的添加

clangd 是集成了 clang-tidy 和 clang-format 的,所以二者的配置文件也能在clangd下面使用。比如,我根据我的喜好更改了 format 格式和它的函数参数提示。
vscode clangd,vscode,linux,驱动开发

.clangd 文件

# 提示嵌入,不使用函数参数嵌入提示
InlayHints:
    Designators: Yes
    Enabled: Yes
    ParameterNames: No
    DeducedTypes: Yes

CompileFlags:
    Add: [-xc, -Wall]

.clang-format 文件

BasedOnStyle: LLVM
UseTab: Never
IndentWidth: 4
TabWidth: 4

# 最外层大括号换行
# BreakBeforeBraces: Linux

BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: true
IndentCaseLabels: false
ColumnLimit: 120

六、其它(可选)

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

vscode clangd,vscode,linux,驱动开发

参考

使用VSCode clangd插件进行linux内核代码阅读和嵌入式开发文章来源地址https://www.toymoban.com/news/detail-793003.html

到了这里,关于VSCode使用clangd构建Linux驱动开发环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ vscode + clangd + gcc + gdb + cmake] 一文带你构造C/C++开发环境 #支持嵌入式开发 #超详细 #小白

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:本节讲解了为什么需要配置这样一套开发环境,可以跳过 本文力求通俗、详细的讲解 C程序开发 环境配置。深入浅出的讲解以及大量的图片对小白更友好。看完本文你将得到一套 vscode + gcc + gdb

    2024年02月20日
    浏览(36)
  • VScode clangd 插件浏览 linux 源码

    VScode clangd 插件浏览代码却决于 compile_commands.json 文件 生成该文件有很多种方法 bear 命令 linux 内核脚本 cmake 编译选项 VScode 插件安装 在 VScode 插件商城搜索安装即可 clangd 安装 方法一 插件下载好之后任意打开一个 C/CPP 文件,vscode 下方会出现弹窗直接 install 即可(若网络原因

    2024年02月06日
    浏览(44)
  • 【VSCode】VScode 配置 Linux 驱动环境(简单版)

    在开始编写驱动之前,我们需要保证良好的编码环境,这里编写代码所使用的编辑器是VScode,如果进行环境配置,可能会提示很多错误,比如头文件找不到、内核函数的定义无法跳转等等。 VScode 在这里只作为编辑器使用,配置的 是编辑环境 ,而 不是编译环境 。 目录 一、

    2024年02月08日
    浏览(49)
  • 【vscode基于clangd实现Android/Linux代码跳转】

    背景: 在开发大型工程例如Android或Linux时若我们使用vscode搭配官方的C/C++插件使用发现,经常很多代码都无法跳转,代码补全功能几乎是废的,通过网友以及同事身边了解之后发现 vscode+clangd可以实现代码任意跳转补全等功能 ,因此本文通过讲解如何配置clangd相关环境实现高

    2024年02月11日
    浏览(37)
  • 【Linux驱动】VScode 环境简单配置

    在开始编写驱动之前,我们需要保证良好的编码环境,这里编写代码所使用的编辑器是VScode,如果进行环境配置,可能会提示很多错误,比如头文件找不到、内核函数的定义无法跳转等等。 VScode 在这里只作为编辑器使用,配置的 是编辑环境 ,而 不是编译环境 。 目录 一、

    2024年02月14日
    浏览(35)
  • vscode使用ssh远程linux可视化开发环境搭建

      最近一直在做服务引擎开发,编译都是在服务器 linux 环境中进行。每次调试使用 gdb 修改使用vim贼麻烦。最后找了下可以使用 vscode 图形化界面进行远程开发调试。尝试了下,果然好使,故记录下来备下次使用。 vscode 远程开发环境搭建流程很简单,大体来说分四步(如下

    2024年02月03日
    浏览(48)
  • Linux Debian12使用VSCode和Python搭建flask开发环境

    一、安装VSCode 在Linux Debian12系统上安装VSCode教程可以参考网上相关教程。 二、安装Python 打开VSCode,安装python和python扩展包,如下图所示: 三、创建Python虚拟环境 1.新建文件夹testFlask 2.用vscode打开文件夹testFlask,选择“是,我信任此作者” 3.在VSCode菜单“终端”-“新建终端”

    2024年01月17日
    浏览(39)
  • 看代码神器:vscode+clangd轻松实现linux内核代码跳转(图文并茂)

    一点感悟 还是那句老话:工欲善其事必先利其器。在做代码开发之前,先准备好开发过程帮助提效的工具,能起到事半功倍的效果。比如本文要讲的vscode下进行linux内核代码开发或者阅读就是很好例子,如果没有先把代码跳转等基础环境搭建好,对后续的代码阅读和开发都可

    2024年01月23日
    浏览(43)
  • 测试驱动的嵌入式开发 002:VSCode + CMake + Unity 环境搭建

    本文是对《测试驱动的嵌入式 C 语言开发》第二章的实践。 这部分参考博文《基于Windows 的 VS Code C/C++ 编译环境搭建》。 安装 CMake ,在官网下载最新安装包。安装时选择 对所有用户添加 CMake 到系统 PATH 。 安装以下插件: CMake:VSCode 的 CMake 语言支持插件 CMake Tools:对插件

    2023年04月18日
    浏览(29)
  • 为vscode配置clangd

    clangd能提供更好的补全和提示,自带检查一些warning的问题,可以减少大家未来找存在的warning的时间。经过配置可以在unittest和timetest中也实现自动补全,平均速度比vscode c/c++插件更快。 在插件市场搜索clangd。安装即可。注意c/c++可以不用卸载,否则调试可能会有点问题。 在

    2023年04月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包