前言
编译Linux驱动,内核头文件是必不可少的,这里根据开发经验,介绍生成linux headers的过程.
操作步骤( 在root帐号,以ARM64平台为例):
1. 解压内核源码
2. 执行make my_defconfig 生成.config,这里我把交叉编译工具配置好了,也就是CONFIG_CROSS_COMPILE,同时CONFIG_ARM64=y
3.执行make -j32 编译内核
4.执行make-kpkg --initrd --cross-compile aarch64-linux-gnu- --arch arm64 kernel_headers
5.在内核源码的上级目录会生成一个deb文件(假设文件名字未linux-4.4.0-112-headers.deb),这个deb文件就是linux headers,与我们用apt-get install *linux-*headers*一样.
6.执行dpkg -X linux-4.4.0-112-headers.deb ./my_headers/ 解压
7.设置Makefile中linux内核头文件路径,发现如下问题:./arch/arm64/include/asm/opcodes.h:5:43:fatal error ../../arm/include/asm/opcodes.h No such file or directory
通过grep命令,发现的确没有,那怎么办呢?怀疑我用的是arm64架构,但是没有把arm32架构的头文件打包,这就不合理了,果断把源码中arch/arm 这个文件夹拷打my_headers/arch 目录中.
编译成功.