gpt4 book ai didi

c - 使用两个源文件编译内核模块时出错

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:33 25 4
gpt4 key购买 nike

我正在尝试编译一个包含两个 .c 文件的内核模块。我的 Makefile 如下

module-y: dummy.o library.o  
obj-m += module.o

default:
make -C /lib/modules/`uname -r`/build M=$(PWD) modules

当我运行它时,我得到了

cc    -c -o dummy.o dummy.c
dummy.c:3:24: fatal error: linux/init.h: No such file or directory

现在 Makefile 似乎不知道在哪里可以找到标题。

我曾尝试使用 CFLAGS 添加包含目录,但它们太多了,变得乏味且难以完成(未能成功)。

我想使用在使用单个 .c 文件时(神奇地)使用的包含目录生成这两个 .o 文件。在那种情况下一切正常。

如何在使用两个源文件时修复包含目录?

最佳答案

我像下面这样编写了 Makefile,它起作用了:

ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
obj-m := module.o
module-y := library.o dummy.o

else
# normal makefile
KDIR ?= /lib/modules/`uname -r`/build

default:
$(MAKE) -C $(KDIR) M=$$PWD modules
endif

关于c - 使用两个源文件编译内核模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com