Linux内核的CSCOPE配置

您所在的位置:网站首页 linux在vim中搜索文件 Linux内核的CSCOPE配置

Linux内核的CSCOPE配置

#Linux内核的CSCOPE配置| 来源: 网络整理| 查看: 265

文章目录 前言一、了解内核源码树二、生成Tag文件二、生成索引总结

前言

基于上一篇博客vim基础配置,在完成vim的基础及一些插件配置后,我们期望的是能够用vim像IDE一样便利地阅读代码,例如查看变量/函数的定义,查找引用等等,本篇博客介绍如何通过vim+cscope实现Linux内核代码的便利阅码

一、了解内核源码树

不管是用传统的IDE还是用vim来阅读一个项目的代码,第一步都应该是创建该项目代码的工程,如果是用IDE的话,那么在创建工程的时候,它会自动帮忙创建变量/函数的Tag,从而让用户可以便利地查询变量/函数的定义,声明等。如果用vim+cscope的方式,需要我们自己创建Tag文件,然后用cscope的命令来建议索引,从而实现与IDE一样的功能。

不同于一般的项目,如果想要阅内核的码,那么无疑代码量是很庞大的,最简单的方法可以不假思索,把所有内核的代码全都建立索引,但这无疑引入了很多冗余的代码,cscope的效率也会相应的降低,因此更优的做法是我们只对我们常用的目录建立索引,那么就要求我们对内核源码树有一定的了解,下面基于6.3.6的内核做一下简单的介绍,大家可以根据自己的需求来生成各自的Tag文件。

目录描述arch特定体系结构的源码block块设备I/O层crypto加密APIDocumentation内核源码文档drivers设备驱动程序io_uring5.1版本引入的异步I/O框架fs文件系统include内核头文件init内核引导和初始化ipc进程间通信kernel调度器等核心子系统lib通用内核APImm内存管理子系统和VMnet网络子系统rust6.1版本引入的基于rust开发部分samples示例代码scripts编译内核所用的脚本security安全模块sound语音子系统usr早期用户空间代码toolsLinux开发中用到的工具virt虚拟化基础结构 二、生成Tag文件

结合内核源码树和自己的需求,我们就可以来生成cscope创建索引需要的Tag文件了,因为我平时都是基于arm64的架构做开发,因此就常用下面的命令来生成Tag文件,大家可以根据自身需求做一些修改:

#!/usr/bin/bash # Author: Young WANG set -eu if [[ $# -ne 2 ]]; then echo "input invalid! please input src dir(root path of kernel) and dst dir(path of cscope.files)" echo "for example:" echo -e "\t bash $0 //common //cscope" exit fi SRC_DIR=$1 DST_DIR=$2 find $SRC_DIR \ -path "$SRC_DIR/arch*" -prune -o \ -path "$SRC_DIR/scripts*" -prune -o \ -path "$SRC_DIR/Documentation*" -prune -o \ -path "$SRC_DIR/rust*" -prune -o \ -path "$SRC_DIR/tools*" -prune -o \ -type f \ -not -name '*.mod.c' \ -name "*.[chsS]" -print > $DST_DIR/cscope.files find $SRC_DIR/arch/arm64 \ -type f \ -not -name '*.mod.c' \ -name "*.[chsS]" -print >> $DST_DIR/cscope.files

使用的时候就可以输入内核源码树和存放cscope的Tag文件(cscope.files)的绝对路径即可,例如

bash gen_kernel_cscope.sh /home//ack/common /home//ack/commom/cscope

顺便附上cscope官方版在针对大工程时的guide供大家参考~

二、生成索引

在文成Tag文件的生成之后,就可以用cscope来创建工程的索引了,这里可以去到存储cscope.files的目录下执行如下命令

cscope -bkq

引用官方的解释,即: -b标志告诉Cscope只构建数据库,而不启动Cscope GUI。 -q导致创建一个额外的“反向索引”文件,这使得大型数据库的搜索运行得更快。 -k设置Cscope的“内核”模式——它不会在/usr/include中查找源文件中#包含的任何头文件(这在您将Cscope与操作系统和/或C库源代码一起使用时非常有用,就像我们在这里一样)。

在完成索引创建后,即可结合vim基础配置里的2.5节来使用cscope了。

总结

如果有哪里理解错的地方欢迎大家留言交流,如需转载请标明出处。

如果你没看懂一定是我讲的不好,欢迎留言,我继续努力。

手工码字码图码代码,如果有帮助到你的话留个赞吧,谢谢。

以上。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3