英语

导出内核头文件供用户空间使用

“make headers_install” 命令导出内核头文件,使其适合用户空间程序使用。

Linux 内核导出的头文件描述了用户空间程序尝试使用内核服务的 API。这些内核头文件被系统的 C 库(例如 glibc 或 uClibc)使用,以定义可用的系统调用,以及与这些系统调用一起使用的常量和结构。 C 库的头文件包括来自“linux”子目录的内核头文件。 系统的 libc 头文件通常安装在默认位置 /usr/include,内核头文件安装在其下的子目录中(最显着的是 /usr/include/linux 和 /usr/include/asm)。

内核头文件向后兼容,但不能向前兼容。 这意味着针对使用旧内核头文件的 C 库构建的程序应该可以在较新的内核上运行(尽管它可能无法访问新功能),但是针对较新的内核头文件构建的程序可能无法在旧内核上运行。

“make headers_install” 命令可以在内核源代码的顶层目录中运行(或使用标准的外部构建)。 它接受两个可选参数

make headers_install ARCH=i386 INSTALL_HDR_PATH=/usr

ARCH 指示要生成哪个体系结构的头文件,默认为当前体系结构。 导出的内核头文件的 linux/asm 目录是平台特定的,要查看支持的体系结构的完整列表,请使用以下命令

ls -d include/asm-* | sed 's/.*-//'

INSTALL_HDR_PATH 指示将头文件安装到哪里。 它默认为“./usr”。

一个“include”目录会自动在 INSTALL_HDR_PATH 内部创建,并且头文件安装在“INSTALL_HDR_PATH/include”中。

内核头文件导出基础设施由 David Woodhouse <dwmw2@infradead.org> 维护。