我正在阅读内核的源文件并得到一些问题:
1)编译器在编译内核时使用哪个头文件路径? 在源文件树中,我找到了一个名为“include”的目录。 但是,在'/ usr / include /'中,我还可以找到一些内核头文件。 编译器使用哪一个?
2)有些文件包含这样的标题:'#include', 但我在源树下找不到任何名为'asm'的目录 和'/ usr / include /',但是,它们都有名为'asm_generic'的目录。 当我使用命令'make headers_install'时,生成的文件包含'asm' 编译内核的过程是否首先安装头文件? 并强制编译器处理它们?
P.S。我想将内核的源文件转换为调用者 - 被调用者图进行一些研究。所以我需要一些静态分析工具。我尝试了'call-tree',但结果充满了错误,你能介绍一些更强大的工具吗?
答案 0 :(得分:1)
使用参数make
运行V=1
,您将看到传递给gcc
和其他程序的确切行。这将告诉您到底发生了什么(从而回答了您的问题)。但是,在回答(2)时,没有make
没有安装任何标头,它只是将-I
参数的包含路径设置为gcc
。