内核模块 makefile 输出名称
Kernel module makefile output name
我正在尝试编译我的内核模块。
.c 文件名为 file1.c
,但我需要 .ko 文件名为 mod1.ko
.
我该怎么做?
我当前的 makefile:
obj-m := mod1.o
KDIR :=/lib/modules/$(shell uname -r)/build
PDW := $(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PDW) modules
clean:
$(MAKE) -C $(KDIR) M=$(PDW) clean
您应该将第一行更改为如下内容:
obj-m += module_name.o
module_name-y := file1.o
其中 module_name
是模块文件名(在此示例中,输出将为 module_name.ko
),它将从 file1.c
构建。您可以在第 2 行添加多个源文件,因此可以是:
module_name-y := file1.o file2.o file3.o
在这种情况下,module_name.ko
将从 file1.c
、file2.c
和 file3.c
构建。
如果您想完全理解 Linux 内核 makefile,您应该阅读 this document。您的问题在第 190 行附近的某处进行了描述。
解决方案如下所示:
obj-m += mod1.o
mod1-objs := file1.o
KBUILD_CPPFLAGS += -I$(PWD)/
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
我正在尝试编译我的内核模块。
.c 文件名为 file1.c
,但我需要 .ko 文件名为 mod1.ko
.
我该怎么做?
我当前的 makefile:
obj-m := mod1.o
KDIR :=/lib/modules/$(shell uname -r)/build
PDW := $(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PDW) modules
clean:
$(MAKE) -C $(KDIR) M=$(PDW) clean
您应该将第一行更改为如下内容:
obj-m += module_name.o
module_name-y := file1.o
其中 module_name
是模块文件名(在此示例中,输出将为 module_name.ko
),它将从 file1.c
构建。您可以在第 2 行添加多个源文件,因此可以是:
module_name-y := file1.o file2.o file3.o
在这种情况下,module_name.ko
将从 file1.c
、file2.c
和 file3.c
构建。
如果您想完全理解 Linux 内核 makefile,您应该阅读 this document。您的问题在第 190 行附近的某处进行了描述。
解决方案如下所示:
obj-m += mod1.o
mod1-objs := file1.o
KBUILD_CPPFLAGS += -I$(PWD)/
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean