有时,我希望跟踪包含文件,直到定义某一类型的行。例如,在busybox中添加了一条命令后,我发现添加的源代码中包含了内核头文件,而内核头文件中包含了其他头文件。但与配置定义变量(CONFIG_...)的linux构建过程不同。用于选择正确的头文件(并在头文件中选择正确的行),在busybox构建中,这些变量没有设置,所以我猜头文件是随意选择的。
所以我想要跟踪头文件,例如看看u32类型是如何定义的,以及在构建过程中如何选择正确的头文件。如果我知道了这一点,我可以在busybox构建过程中添加一些配置,以便在最终构建中选择正确的linux头文件和行。
有没有什么有效的方法可以找到包含文件的包含路径?我尝试在生成.o文件时将-M添加到CPPFLAGS中,以查看其中包含了哪些文件,但没有相关的信息输出。
编辑:我使用grep查找定义了类型的文件,然后修改了每个候选文件的typename,以找到最终使用的头文件。然后使用grep查找包含该文件的文件。并更改了包含文件名以了解真实的包含文件(由于更改的文件名,实际包含文件在包含期间出错。)。我重复了一遍,这样我就可以跟踪include路径了。也许这是唯一的方法?
发布于 2014-08-05 12:26:42
要查看typedef名称的实际类型,您需要查看预处理器的输出:
https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html
在gcc上,它的选项是-E。此输出还将包含来自头文件的递归包含的内容。
https://stackoverflow.com/questions/25131051
复制相似问题