C 在Linux模块中包括自定义头

C 在Linux模块中包括自定义头,c,linux,makefile,kernel-module,C,Linux,Makefile,Kernel Module,在有人指出这一点之前,这里曾经回答过一个类似的问题: 我也有同样的问题。我创建了自己的结构和函数集,并在C文件中定义了它们。然后我创建了一个同名的头文件,并将其包含在一个模块中。然后我创建了Makefile: obj-m += themodule.o themodule-objs := the-module.o my-code.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean:

在有人指出这一点之前,这里曾经回答过一个类似的问题:

我也有同样的问题。我创建了自己的结构和函数集,并在C文件中定义了它们。然后我创建了一个同名的头文件,并将其包含在一个模块中。然后我创建了Makefile:

obj-m += themodule.o
themodule-objs := the-module.o my-code.o

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

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
我的自定义文件是My code.c和My code.h

当我试图编译模块时,我收到了大量警告,告诉我代码.c中的所有函数都未在module.c中定义。当我尝试加载模块时,我收到错误,告诉我对代码.c的函数调用是“未知符号”。我尝试了链接问题中提到的解决方案(参见Makefile),但这对我来说并不奏效。有什么想法吗?

模块objs的顺序很重要。试试这个:

obj-m += themodule.o
themodule-objs := my-code.o the-module.o

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

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

谢谢你的回复。我仍然收到相同的警告和错误。你能复制并粘贴你的未知符号错误和编译警告吗?