【Linux内核】如何更加优雅阅读Linux内核源码(vscode)

发布于:2025-04-07 ⋅ 阅读:(36) ⋅ 点赞:(0)

1. 前言

因为已经习惯在Ubuntu下进行嵌入式工作开发,但Linux源码在Source Insight下进行阅读,一直很苦恼Linux/Windows来回切换的开发方式,当前发现可以通过 vscode + clangd(扩展组件) 方式进行更好的内核源码阅读。

2. 环境

  • 操作系统: Ubuntu 18.04
  • vscode版本: 1.85.2

3. 配置流程

3.1 clangd(扩展组件)

3.1.1 clangd - 下载

  1. 尝试安装 clang-9 版本
    sudo apt-get install clangd-9
    #如果没有找到,clangd-8 应该至少是有效的
    # sudo apt-get install clangd-8
    
  2. 此时 clangd-9 将会被安装,将clangd-9改为默认clangd 程序调用
    sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-9 100
    
  3. 进行版本验证
    long@long-ubuntu18:~$ clangd --version
    clangd version 9.0.0-2~ubuntu18.04.2 (tags/RELEASE_900/final)
    

clangd官网指南(包含Windows、MacOS指南)

clangd.llvm.org


3.1.2 clangd - 扩展安装

vscode - 扩展 - 搜索:clangd - 安装

clangd安装


3.1.3 clangd - 扩展配置

  1. 点击 clangd 扩展插件的齿轮按钮,进入扩展设置
    clangd扩展配置
  2. clangd: Arguments 配置项,通过 添加项 将下面内容一项一项添加进去
    --compile-commands-dir=${workspaceFolder}
    --background-index
    --completion-style=detailed
    --header-insertion=never
    --log=info
    
    配置

3.3 配置文件

3.3.1 编译Linux内核

  • 如果资料是SDK,则完整编译SDK;
  • 如果资料是Linux Kernel源码,则进行OS配置和编译;

因为 clangd 通过读取工程编译后的 compile_commands.json 配置文件,然后索引配置文件中包含的源文件和关联的头文件,同时分析编译使用到的宏定义,可以避免跳转解析时的语义混乱问题。

3.3.2 生成配置文件

内核源码自带生成 compile_command.json 配置文件的脚本:

# 进入Linux Kernel源码路径
cd kernel_xx
# 执行脚本生成配置文件
./scripts/clang-tools/gen_compile_commands.py 

生效

重启vscode软件即可!


效果

指针悬停自动查看函数、变量原型,宏定义值等
效果