使用VSCode阅读linux内核源码
使用VSCode阅读linux内核源码!
这里用宿主机windows + 虚拟机Ubuntu Server(开启 SSH 服务)的配置环境。
1.下载linux内核源码。源码从kernel.org下载或使用wget工具下载:
inotify 是 Linux 下监控文件变化的工具,当系统的文件发生变化时,可以发送通知到应用层。
linux内核源码中文件数量非常多,在使用VSCode打开内核代码目录作为工作区,会导入了整个Linux内核代码吃光 user_watches 资源, 导致 VSCode 加载缓慢且有 error ENOSPC 产生。这里需要调大它同时能监控的文件数量。
VSCode 上有现成的插件可以直接使用,我们在 VSCode 这个 SSH 会话里安装 C/C++ GNU Global 插件,然后在内核代码项目中新建 .vscode/settings.json(如果自定义了 global 工具的路径的话需要在这里显式地配置 gnuGlobal.globalExecutable 和 gnuGlobal.gtagsExecutable 字段)。
使用如下命令查看 global 的路径:
在 VSCode 工作区中按 F1 执行 Show GNU Global Version,如果配置正确,右下角会显示 global (GNU GLOBAL) < Global_Version >。
执行 Rebuild Gtags Database,等待完成后就可以阅读 Linux 源码了!
这里用宿主机windows + 虚拟机Ubuntu Server(开启 SSH 服务)的配置环境。
1.下载linux内核源码。源码从kernel.org下载或使用wget工具下载:
[initroot@study ~]$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0-rc3.tar.gz
2.解压内核代码到当前目录:
[initroot@study ~]$ tar -xf linux-5.0-rc3.tar.gz
3.修改 inotify 参数inotify 是 Linux 下监控文件变化的工具,当系统的文件发生变化时,可以发送通知到应用层。
linux内核源码中文件数量非常多,在使用VSCode打开内核代码目录作为工作区,会导入了整个Linux内核代码吃光 user_watches 资源, 导致 VSCode 加载缓慢且有 error ENOSPC 产生。这里需要调大它同时能监控的文件数量。
#打开linux的/etc/sysctl.conf文件: [initroot@study ~]$ vim /etc/sysctl.conf在文件最后一行添加如下行:
fs.inotify.max_user_watches=524288使配置使参数生效:
[initroot@study ~]$ sudo sysctl -p
4.linux下安装配置 global 工具,global 工具是 GNU 协议下的源码标记软件。
[initroot@study ~]$ sudo apt install global
5.VSCode安装 global 插件 VSCode 上有现成的插件可以直接使用,我们在 VSCode 这个 SSH 会话里安装 C/C++ GNU Global 插件,然后在内核代码项目中新建 .vscode/settings.json(如果自定义了 global 工具的路径的话需要在这里显式地配置 gnuGlobal.globalExecutable 和 gnuGlobal.gtagsExecutable 字段)。
使用如下命令查看 global 的路径:
[initroot@study ~]$ sudo which is global [initroot@study ~]$ sudo which is gtags如果将所有代码生成的 GPATH, GRTAGS, GTAGS 文件存到同一个文件夹中,可以显式配置 gnuGlobal.objDirPrefix 字段。
{  "gnuGlobal.globalExecutable": "/usr/bin/global",  "gnuGlobal.gtagsExecutable": "/usr/bin/gtags",  "gnuGlobal.objDirPrefix": "/home/constantine3/Repo/.global" }6.生成 tag
在 VSCode 工作区中按 F1 执行 Show GNU Global Version,如果配置正确,右下角会显示 global (GNU GLOBAL) < Global_Version >。
执行 Rebuild Gtags Database,等待完成后就可以阅读 Linux 源码了!
参考网址:www.initroot.com
本文由initroot整理编辑,转载请注明www.initroot.com技术交流群:59909790