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軟件即可!
效果
指針懸停自動查看函數、變量原型,宏定義值等