【发布时间】:2018-10-21 12:25:57
【问题描述】:
我正在使用一个小的演示内核模块来学习内核中断 使用这两个标头包括
asm/exception.h
asm/mach/irq.h
我的 Makefile 是
ifeq (${KERNELRELEASE},)
KERNEL_SOURCE := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
make -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules
clean:
make -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean
else
obj-m := irq_demo.o
endif
我得到的错误
irq_demo.c:9:27: fatal error: asm/exception.h: No such file or directory
#include <asm/exception.h>
我在我的系统中的 /usr/src/linux-headers-3.16.0-30-generic/arch/arm/include/ 中找到了 asm/exception.h
[1]但是如何在 Makefile 中包含这个路径
[2] /usr/src/linux-headers-3.16.0-30-generic/include/asm-generic/ 是否与 arch/arm/include/asm/ 链接?如果是,比如何?
【问题讨论】:
-
arch/下的标题是特定于架构的。如果您为 ARM 架构编译内核,则会自动包含目录arch/arm/include。看起来你没有为 ARM 编译,或者/usr/src/linux-headers-3.16.0-30-generic不是你的内核构建目录。您可以使用ls -l /lib/modules/$(uname -r)/build找到当前内核目录。
标签: linux makefile linux-kernel linux-device-driver kernel-module