我正在编写一个字符驱动程序以位于源代码树中 ahci 的修改版本之上。我基本上有这样的东西:
topdir
|
|- Makfile
|
|- mod_ahci
| | - Makefile, codefiles
|
|- char_interface
| | - Makefile, codefiles
现在,char_interface 需要来自 mod_ahci 的符号。EXPORT_SYMBOL()
我对需要导出的符号有适当的宏使用。但是,我无法让 makefile 正确地从 char_interface 获取 mod_ahci 中的头文件。我的顶级 Makefile
ifneq ($(KERNELRELEASE),)
obj-y := mod_ahci/ char_interface/
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
endif
char_interface 的生成文件(因为其他构建很好)
ifneq ($(KERNELRELEASE),)
ccflags-y += -I../mod_ahci
obj-m := char_interface.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
default:
$(MAKE) -C $(KERNELDIR) M=$(shell pwd) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(shell pwd) modules_install
endif
clean:
-sudo rmmod ahcip
-rm -f *.ko* *.mod.* *.o modules.order Modules.symvers
我在内核文档中引用了各种文本文件。例如,我现在指的是 .../Documentation/kbuild/makefiles.txt 以及 .../Documentation/kbuild/modules.txt。每当我构建时,我都会得到/home/captaink/devel/kmodtests/char_interface/char_interface.c:2:22: error: mod_ahci.h: No such file or directory
. 目录中有一个名为mod_ahci.h的文件../mod_ahci
。我ccflags-y
在 char 驱动程序的 makefile 中使用了什么错误?
谢谢