论文部分内容阅读
Linux是主流操作系统之一。其具有内核源码开放的优势,但同时亦存在设计文档匮乏、开发维护理解困难的问题。特别地,伴随Linux内核版本的持续升级和源码规模的日益庞大,相关问题愈显突出。其间,Linux内核构建过程及内核文件间依赖关系的分析是改善和提高整个内核可理解性的一项非常重要的前提条件。换句话说,只有搞清楚了内核编译过程中需要创建哪些目标和如何创建这些目标以及有关目标之间的依赖关系,传统的静态代码分析工具关于函数、变量等数据与模块的定位和依赖关系分析才会更精准,进而发挥更大效用。因此,本文开展Linux内核文件间依赖关系的分析和研究,具有重要的现实意义和应用价值。本文首先简要阐述了 Linux内核源码、Makefile文件与内核构建、make工具等相关基础知识,然后对Makefile文件的语法规则、Makefile文件的组织结构以及Linux内核文件间依赖信息的提取问题展开了详细分析,其中重点讨论了Makefile文件语法的详细解析方案以及Linux内核文件间依赖信息的提取、描述和遍历方法,从而形成了基于Makefile文件的Linux内核文件间依赖关系的分析方法。具体而言,以各类Makefile文件的分析及系统配置为切入点,通过对Makefile文件内容包括变量赋值语句、分支判断语句、函数调用语句、规则语句块以及include语句等进行深度分析,从中提取描述内核构建过程及内核文件依赖关系的相关信息,其间并采用递归处理方式实现了对内核各目录层级中所有的Makefile文件的分析,进而保证了 Linux内核构建过程及相关依赖信息结果的完整性和准确性。在此基础上,利用VS2010设计和构建了相应的Linux内核文件间依赖关系分析工具原型,并实现了相关依赖信息的可视化处理和图形显示。原型测试结果表明,其可以准确地给出内核文件间的依赖关系,且开销不大,具有较强的可用性,有助于理解Linux内核构建过程和改善Linux内核源码的分析过程,适用于其它大型软件的分析理解,将来与有关系统开发平台加以集成并有利于提高系统开发维护效率。