Linux 内核头到底是什么?

Linux 内核头到底是什么?

可能的重复:
内核源代码树包含什么?这与 Linux 内核头文件有关吗?

我知道如果我想编译自己的 Linux 内核,我需要 Linux 内核头文件,但它们到底有什么用呢?

我发现下面/usr/src/好像有几十个C头文件。但它们的目的是什么,它们不是直接包含在内核源代码中吗?

答案1

头文件定义一个接口:它们指定如何定义源文件中的函数。

使用它们是为了使编译器可以检查函数的使用是否正确,因为头文件中存在函数签名(返回值和参数)。对于此任务,不需要实际实现该功能。

您可以对完整的内核源代码执行相同的操作,但您将安装许多不必要的文件。

示例:如果我想使用该功能

int foo(double param);

在程序中我不需要知道它foo是如何实现的,我只需要知道它接受单个参数(double)并返回一个整数。

答案2

如上所述,头文件定义了程序使用的函数和结构的接口。

对于内核头文件,这些函数和结构位于内核本身内。

如果您正在构建完整的内核,那么显然您需要完整的源文件,而不仅仅是标头。但是,如果您正在编译链接到内核的设备驱动程序或其他可加载模块,那么您只需要头文件,因此可以通过不安装完整源代码来节省空间。

软件包的分离使得您可以只安装头文件,这在一定程度上是历史性的,因为当磁盘较小时,磁盘使用的差异曾经是一个重要的考虑因素。如今,将整个源文件放在磁盘上(不必要)将不再是主要的磁盘空间考虑因素。

答案3

术语“头文件”源自C用于编写 Linux 内核的编程语言。

从一个很高的层面来解释它......

在C语言中,你需要有一个前向声明在使用某个函数之前。换句话说,是对函数、其参数以及它返回的数据类型的描述。通常的做法是将所有前向声明放入一个名为标头。其他程序的源代码文件可以使用include此标头,并在编译后可以访问生成的可执行程序中的所有函数。

.hLinux 头文件是包含 Linux 内核提供的可以从其他程序调用的函数的所有文件。

相关内容