我正在读取内核的源文件并且有一些问题:编译内核时编译器使用哪个头文件路径?
1)编译内核时编译器使用哪个头文件路径? 在源文件树中,我找到了一个名为'include'的目录。 但是,在'/ usr/include /'中,我也可以找到一些内核头文件。 编译器使用哪一个? 2)某些文件包含这样的头文件:'#include', 但我在源树 和'/ usr/include /'下找不到任何名为'asm'的目录,但是,他们有名为'asm_generic'的目录。 当我使用命令'make headers_install'时,生成的文件包含'asm' 编译内核的过程是否首先安装头文件? 并强制编译器来处理它们?
p.s.我想将内核的源文件转换为调用者 - 被调用者图来做一些研究。所以我需要一些静态分析工具。我确实尝试了'call-tree',但结果充满了错误,您能否介绍一些更强大的工具?
欢迎来到SO。请一次只提出一个问题,否则您完全破坏本网站的目标是成为可搜索的知识库。您可以轻松编辑您的问题,将其减少为一个干净的单个问题,然后最终在单独的线索中询问其他人。 –
使用源树中的副本。/usr/include中的文件被提取出来,用于用户模式程序的导出版本,该程序可以与内核进行链接。 asm /目录是特定于平台的,而内核源代码是不可知的,所以构建过程将指向与正在构建的配置相对应的特定目录。你可能会发现'find'和'grep -r'命令在你的探索中很有趣...... –
Linux内核是“自我内容”,它不依赖于任何库。这意味着内核源代码中引用的所有头文件也是内核的一部分。 –