c - 编译器编译内核时使用哪个头文件路径?

标签 c linux-kernel header-files

我正在阅读内核源文件并遇到一些问题:

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/

相关文章:

c - dirent.h(opendir、readdir、closedir)的代码在哪里? undefined symbol

c - 我如何 robuSTLy 包含可能位于不同(未知)目录中的外部头文件?

c - 在哪里记录 C 或 C++ 中的函数?

c - 如何在 C/C++ 中打印这个系列 x-(x^3/3!)+(x^5/5!)-(x^7/7!)+...(x^n/n!)?

c - Windows : Connect TI-Launchpad to Amazon Web Services

c - Readline (libedit) 非标准输入

linux - 我如何知道我的系统是否启用了 ARM 的 XN(永不执行)位支持?

Char数组声明问题

ssh - 不能 SSH/SCP 到基于 Qemu 的 powerpc 虚拟机

linux - linux中的线程控制 block