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 - 下载
- 尝试安装
clang-9
版本sudo apt-get install clangd-9 #如果没有找到,clangd-8 应该至少是有效的 # sudo apt-get install clangd-8
- 此时
clangd-9
将会被安装,将clangd-9
改为默认clangd
程序调用sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-9 100
- 进行版本验证
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 - 安装
3.1.3 clangd - 扩展配置
- 点击
clangd
扩展插件的齿轮按钮,进入扩展设置
- 在
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软件即可!
效果
指针悬停自动查看函数、变量原型,宏定义值等