linux内核代码跳转神器--clangd配置

之前在看linux内核代码的时候就觉得vscode的C/C++插件的跳转不是很灵敏,所以打算用clangd和vscode的clangd插件来看内核代码。vscode的插件或者其他的配置是有区分的,分为用户和工作空间配置。用户配置是所有工作空间都是用这个配置,而工作空间配置只是某个工程的代码使用该配置。vscode的C/C++可以用于一些较小的工程的代码阅读,而clangd单独用于内核代码阅读。基于上述原因,我们需要使用工作空间配置,使得不同的工程使用不同的跳转工具。

1 安装clangd和clangd插件

clangd插件直接在插件应用商店搜索:clangd,安装即可。clangd是指clangd-server可以通过命令安装:

sudo apt-get install clangd-12
sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-12 100

我这里使用的是clangd-12。上述命令安装完之后通过下面命令查看是否安装成功:

clangd -version

2 配置clangd插件

clangd插件和C/C++插件是冲突的,是无法在一个工作区同时使用的。vscode的配置可以分为用户和工作区,如图所示:

2025-10-20-19-38-05-image

用户配置是对所有的项目都使用这个配置;工作区配置是仅对于当前工作目录的项目生效 。那么我们可以利用这个特性,对于需要使用C/C++插件或clangd插件的项目分别在工作区进行配置。上图只需要切换到“工作区”的选项卡后,对相应插件进行配置即可。步骤如下:

  1. 先全局禁用clangd和C/C++插件
    2025-10-20-19-43-52-image

2025-10-20-19-44-05-image

  1. 在项目工作区中启用合适的插件

2025-10-20-19-49-02-image

点击启用,然后选择启用工作区即可。

  1. 配置clangd

配置启动选项。
2025-10-20-19-50-42-image

--background-index:在后台索引符号表

--compile-commands-dir: linux内核的compile_commands.json文件所在的路径,这个需要根据实际情况填写路径。

3 如何生成compile_commands.json文件

在编译完对应的内核后(编译可以参考:linux kernel编译以及根文件系统的制作 - cockpunctual - 博客园),内核提供了gen_compile_commands.py文件可以直接根据编译后的结果生成compile_commands.json文件。这个文件位于:script文件夹下面。

python3 gen_compile_commands.py

compile_commands.json文件会在上面命令执行的路径下生成。

我是在进入到linux文件夹后执行上面的命令的,生成的compile_commands.json也在这个路径下。vscode打开的目录也是这个路径,所以上面的--compile-commands-dir={workspaceFolder} 也就是vscode的工作目录。

posted @ 2025-10-20 20:09  cockpunctual  阅读(277)  评论(0)    收藏  举报