在阅读Linux源码的时候,经常会在.c文件中看到#include <linux/init.h>、#include <asm/ioclt.h>这样的头文件,当我们想阅读其头文件中内容时,却发现找不到他的位置。那么这种头文件到底位于哪里呢?
Linux内核源码中的内核头文件位于源码树顶级目录下的include目录中。内核源代码文件不能包含外部头文件,就像他们不能使用外部库一样。基本的头文件位于源码树顶级目录下的include目录中。以#include <linux/init.h>为例。该头文件位于kernel源码中/include/linux/init.h。体系结构相关的头文件集位于内核源码树的arch/<architecture>/include/asm目录下(例如编译系统是x86体系,则体系结构相关的头文件就是arch/x86/include/asm),内核代码通过以asm/为前缀的方式包含这些头文件,例如<asm/ioclt.h>。