使用flex编程解析内存依赖的.o.cmd文件

编译内核后会生成.o.cmd文件,记录了.o文件的编译命令和依赖。通过flex解析这些文件,可以提取出依赖的头文件。内容主要分为CMD_SECTION和DEP_SECTION,DEP_SECTION中通过$(wildcard include-file)和include-file查找.h文件,并过滤掉带绝对路径的标准库头文件。
摘要由CSDN通过智能技术生成

编译内核之后相应的文件会产生一个 .*.o.cmd的依赖文件, 根据此文件可以看出被编译的.o文件依赖哪些头文件,以及被编译的参数.

.o.cmd文件的格式为:

cmd_dir/output.o := commands

dep_dir/output.o := depended_files

     总的来说由两部份组成, 一个是编译命令, 另一个是依赖文件. 所以此法分析分成两结: CMD_SECTION(命令) 和 DEP_SETION(依赖), 进入的条件分别是 cmd_... 和 dep_...

我们要提取出依赖的头文件, 所以CMD_SETION不做任何处理.

DEP_SETION 中分别由 $(wildcard include-file),   include-file两部分组成, 而且都有续行符号"\".

这里遇到 include-file 后判断是否是.h文件以及不带解决路径的头文件, 如果是的话打印文件名到标准输出即可. (带绝对路径的是标准库头文件, 这里不需要).

编译命令:   flex scan.l; gcc lex.yy.c

============================scan.l==============================================

%{

#include <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值