vscode阅读Linux代码(clangd)
Linux主机配置
sudo apt install clangd bear
编译内核代码,并生成编译信息文件
make ARCH=arm64 orangepi-zero3_defconfig
make ARCH=arm64 CROSS_COMPILE=/work/orange_zero_3/buildroot/output/host/bin/aarch64-linux- -j12
或者在make前面添加命令:bear --append --
,下步骤可以不做
生成compile_commands.json
python3 ./scripts/clang-tools/gen_compile_commands.py
vscode配置
禁用或卸载官方C/C++插件
安装插件:clangd,LLDB DAP,CMake Tools
全局配置(局部配置需要手动创建json文件),如需使用,仅需复制clangd部分即可。
{
"remote.SSH.remotePlatform": {
"192.168.10.10": "linux",
"192.168.10.11": "linux",
"192.168.10.20": "linux"
},
"window.commandCenter": false,
"files.defaultLanguage": "display",
"workbench.colorTheme": "One Dark Modern",
"cmake.showOptionsMovedNotification": false,
"terminal.integrated.enableMultiLinePasteWarning": false,
"arduino.useArduinoCli": true,
"editor.minimap.enabled": false,
"workbench.editorAssociations": {
"*.bin": "default",
"*.scr": "default"
},
"makefile.configureOnOpen": true,
"search.collapseResults": "auto",
"search.defaultViewMode": "tree",
"editor.accessibilitySupport": "off",
"git.openRepositoryInParentFolders": "never",
"C_Cpp.intelliSenseEngine": "disabled",
"cmake.generator": "Ninja",
"cmake.preferredGenerators": [
],
"cmake.configureSettings": {
"CMAKE_EXPORT_COMPILE_COMMANDS": 1,
},
// Clangd 运行参数(在终端/命令行输入 clangd --help-list-hidden 可查看更多)
"clangd.arguments": [
"--all-scopes-completion",
"--completion-style=bundled",
"--cross-file-rename",
"--header-insertion=never",
"--header-insertion-decorators",
"--background-index",
"--clang-tidy",
"-j=16",
"--pch-storage=memory",
"--function-arg-placeholders=false",
"--compile-commands-dir=${workspaceFolder}"
],
}
配置clangd
设置—>搜索clangd—>Clangd: Arguments—>添加项
--compile-commands-dir=${workspaceFolder}
删除配置(否则会报Clang Language Server client: couldn’t create connection to server.)
--compile-commands-dir=build
创建.clangd文件(源码目录下面)
解决error: invalid AST错误,此处是照抄别人的配置,具体含义未知。
CompileFlags:
Remove: -mabi=lp64
参考
vscode使用clangd报error: invalid AST错误-优快云博客
vscode+clangd阅读Linux内核源码_vscode阅读linux源码-优快云博客
Couldn’t build compiler instance · Issue #734 · clangd/clangd (github.com)