1.准备工作
需要的VSCode插件:clangd、remote-ssh(本机阅读和开发代码不需要)。
需要的脚本:kernel目录下的scripts/clang-tools/gen_compile_commands.py 。
2.步骤
2.1.在VSCode上安装remote-ssh
如果是远程阅读和开发代码的话,需要安装该插件,该插件的作用是通过ssh协议使vscode能够访问远程服务器。
安装完插件后,按F1键打开VSCode的命令输入栏,输入Remote-SSH: Connect to Host…,接着输入远程主机的用户名和ip,如root@192.168.50.170,接着连接远程主机,会要求输入远程主机的密码,成功后即可访问远程主机,并可访问远程主机上的文件。
2.2.编译内核
编译内核后会生成一些.o.cmd等记录命令和依赖的文件,python scripts/clang-tools/gen_compile_commands.py会解析这些文件,从而分析真正编译进内核的文件和符号。
2.3.生成compile_commands.json文件
在linux内核源码目录执行python scripts/clang-tools/gen_compile_commands.py命令,即可生成compile_commands.json,该文件包含了内核编译实际使用了的源文件。
2.4.在VSCode上安装插件clangd
有两个安装选项:安装到本地和安装到远程服务器,如果是远程开发,那两个都要安装。clangd插件用于解析compile_commands.json中包含的源文件和关联的头文件,避免索引非编译代码导致的语义混乱,用于代码语义分析、代码补全、跳转等。
3.后记
有些网站将linux内核源码放在上面,供大家在线浏览:
https://elixir.bootlin.com (只能搜索函数和宏定义,功能单一)
https://lxr.missinglinkelectronics.com (比第一个功能多一些,可以搜索内核中的字符串)