近期需要阅读 Linux Kernel 的源码,因为我日常使用 NeoVim + coc.nvim 在 Ubuntu 上进行开发,以下是我的配置记录。
NeoVim: 是 Vim 的一个 fork 版本,可以使用 Lua 进行配置和扩展 coc.nvim: 是一套使用 javascript 开发的 LSP 实现,目标是贴近 VsCode 的使用体验 ccls: 是 C/C++/Objective-C 的 Language Server 实现 bear: 用于记录传递给编译器的命令以构建 compile_commands.json 安装依赖 apt install clang libclang-14-dev bear 安装 ccls git clone --depth=1 --recursive https://github.com/MaskRay/ccls cd ccls cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/clang+llvm-xxx cmake --build Release ccls --version 配置 coc.nvim { "languageserver": { "ccls": { "command": "ccls", "filetypes": ["c", "cc", "cpp", "c++", "objc", "objcpp"], "rootPatterns": [".ccls", "compile_commands.json", ".git/", ".hg/"], "initializationOptions": { "cache": { "directory": "/tmp/ccls" } } } } } 克隆 Linux Kernel 并索引 git clone git@github.com:torvalds/linux.git cd linux # 此处我打算查看 x86 架构的代码 make O=. ARCH=x86 COMPILED_SOURCE=1 cscope tags # 使用 bear 来监控一次构建,用于生成 compile_commands.json bear -- make -j 8 完成上述步骤之后,通过 nvim 打开 内核代码 就可以通过 gd 来跳转定义了。
...