编写CMA驱动 遇到 error: dereferencing pointer to incomplete type

写了一个CMA驱动,make编译后:

 error: dereferencing pointer to incomplete type ‘struct cma’
     cma->name, cma->base_pfn);

意思是cma只是声明了。

cma.h在目录include/linux/cma.h里,里面空有一句

struct cma;

对,这句只是做了声明,但并未做任何定义和初始化。那到底在哪定义的呢?

很奇葩,在mm目录下还有一个cma.h,里面定义了cma结构体。

 

妈的,反手就往Makefile里添加了

EXTRA_CFLAGS := -I$(KERNEL_DIR)/mm

all:
    make -C $(KERNEL_DIR) M=$(CUR_DIR) EXTRA_CFLAGS=$(EXTRA_CFLAGS) modules

 

搞定。。。。

你可能感兴趣的:(linux,内核,linux,makefile)