【问题标题】:How to provide include directory path in kernel module Makefile如何在内核模块 Makefile 中提供包含目录路径
【发布时间】: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


【解决方案1】:

第一次尝试 在 make 之后添加 ARCH=arm 即

make ARCH=arm -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules 

============================== 或================= =============

你可以尝试在make之前添加行吗

CARGS = -I /lib/modules/$(shell uname -r)/arch/arm/include/
make  $(CARGS) -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules 

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 2020-09-23
    • 1970-01-01
    • 2020-05-28
    • 2015-03-31
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多