使用VSCode阅读linux内核源码

使用VSCode阅读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

相关阅读:
initroot,专注linux知识学习分享