我应该如何为 linux 内核模块构建设置额外的包含路径?

时间:2021-07-21 04:50:53

标签: makefile linux-kernel kernel linux-device-driver kernel-module

这是我用于交叉构建内核模块的 Makefile。

export CROSS_COMPILE:=aarch64-none-linux-gnu-
export ARCH:=arm64
obj-m += chr_drv_ex1.o
export KDIR:=linux-source-5.4.0
#EXTRA_CFLAGS=-I../../qemu-5.1.0/hw/misc
#ccflags-y=-I../../qemu-5.1.0/hw/misc

all: test_chr_drv map_hugetlb test_ioctl_drv
    make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KDIR) M=$(PWD) modules

clean:
    make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KDIR) M=$(PWD) clean
    rm -f test_chr_drv map_hugetlb test_ioctl_drv

%: %.c
    $(CROSS_COMPILE)gcc $^ -o $@

现在在我的 chr_drv_ex1.c 文件中,我想包含一个位于 ../../qemu-5.1.0/hw/misc 目录中的头文件。添加此路径的正确方法是什么?我看到 this 并尝试设置 EXTRA_CFLAGS 和 ccflags-y 但它们都不起作用(上面已注释掉这些)。当然,如果我在 chr_drv_ex1.c 源代码中使用 #include "../../qemu-5.1.0/hw/misc/axpu_regs.h" 我可以编译它。但我想使用 #include <axpu_regs.h>

1 个答案:

答案 0 :(得分:0)

我从

更改了ccflags-y
ccflags-y := -I../../qemu-5.1.0/hw/misc

ccflags-y := -I../../../qemu-5.1.0/hw/misc

因此,应指定包含路径,如从内核 make 目录(Linux 内核的 Makefile 所在的位置。在本例中为 linux-source-5.4.0 目录,比我现在所在的位置低一级)所看到的路径。