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的配置可以分为用户和工作区,如图所示:

用户配置是对所有的项目都使用这个配置;工作区配置是仅对于当前工作目录的项目生效 。那么我们可以利用这个特性,对于需要使用C/C++插件或clangd插件的项目分别在工作区进行配置。上图只需要切换到“工作区”的选项卡后,对相应插件进行配置即可。步骤如下:
- 先全局禁用clangd和C/C++插件
![2025-10-20-19-43-52-image]()

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

点击启用,然后选择启用工作区即可。
- 配置clangd
配置启动选项。

--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的工作目录。


浙公网安备 33010602011771号