繁体   English   中英

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

[英]Error compiling kernel module with two source files

我正在尝试编译具有两个.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添加include目录,但是其中有很多目录变得繁琐且难以执行(无法使其正常运行)。

我想使用包含目录(在魔术上使用单个.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM