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