学校的操作系统课程设计, Ubuntu14.04升级新内核并从新内核启动(4.2.6stable)
后来要求编写一个字符设备驱动, 代码里面
#include
#include
. . .
结果make的时候提示找不到这些头, 我的makefile里面定义的KDIR是/lib/include/4.2.6/build
驱动代码和makefile都是参照网上的例程的, 以前没有内核开发经验
我自己尝试find types.h头, 后来发现它的上一级目录并不是sys, 有人能详细解说一下么
包括-generic源码里面也没有这样的目录结构
编译完新内核相应的内核树不是也已经建立好了么, 为什么目录结构不一样呢
我的makefile(参照《Linux设备驱动》里面的)
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := char_dev.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
#INCLUDE ?= /usr/src/linux-4.2.6/include/linux
KERNELDIR ?= /lib/modules/3.13.0-24-generic/build
#/usr/include/x86_64-linux-gnu/
#/usr/src/linux-4.2.6/include/linux
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
包含的几个头如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include