2.2.6 安装内核头文件
应用程序很少直接通过内核提供的接口使用内核提供的服务,而通常都是用C库使用内核提供的服务。C库的主要内容之一是对内核服务的封装。以系统调用_exit为例:
Glibc中使用的系统调用号NR_exit_group和NR_exit都是在内核中定义的。因此,在编译目标系统的C库之前,我们首先需要安装内核头文件。
首先解压内核源码,并清理内核。
我们可以通过变量ARCH指出目标系统的架构,在默认情况下,make将自动探测宿主系统的架构,并认为目标系统的架构与宿主系统的架构相同。对于IA32来说,其ARCH值是i386。另外,在安装前,还需要对内核头文件进行一些合法化检查。
完成安装后,我们可以看到的内核定义的系统调用号在文件unistd_32.h中。Glibc就可以包含该头文件,并使用诸如__NR_exit等宏定义。