从多个源文件构建内核模块,其中一个源文件与模块同名
- 2024-10-21 09:14:00
- admin 原创
- 93
问题描述:
是否可以从多个源文件构建内核模块,其中一个源文件与模块同名?
例如:我想使用以下源文件构建“mymodule.ko”:
mymodule.c
mymodule_func.c
该 makefile 不起作用:
#Makefile
obj-m += mymodule.o
mymodule-objs := mymodule.o mymodule_func.o
谢谢
解决方案 1:
在内核 make 文件中修复的正确方法是:
#
obj-m+= my_module.o
#append other source files except my_module.c which would be include by default
my_module-objs+= src1.o src2.o
解决方案 2:
我找到了一个解决方案,我将源文件放在一个子文件夹中:
生成文件
src/mymodule.c
src/mymodule_func.c
#Makefile
obj-m += mymodule.o
mymodule-objs := ./src/mymodule.o ./src/mymodule_func.o
all:
make -C $(KERNEL_PATH) M=$(PWD) modules
clean:
make -C $(KERNEL_PATH) M=$(PWD) clean
解决方案 3:
根据我的理解,模块名称和源名称不可能相同。最好提供模块名称module.o
,并使用 Makefile 编译可加载内核模块,如下所示,
Makefile
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
**obj-m := module.o
module-objs := mymodule.o mymodule_func.o**
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
EXTRA_CFLAGS += -DDEBUG
else
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean
解决方案 4:
您可以用来TARGET
命名您的 .ko 文件,正如我在此示例中所做的那样:
TARGET = can
KDIR = /lib/modules/3.1.10-1.16-desktop/build
PWD := $(shell pwd)
obj-m += $(TARGET).o
can-objs := can_core.o can_open.o can_select.o can_sysctl.o can_write.o \n can_close.o can_ioctl.o can_read.o can_util.o \n can_debug.o can_error.o \n can_async.o can_sim.o
default:
make -C $(KDIR) M=$(PWD) modules
因此,在构建完成后,我得到了一堆目标文件和can.ko
解决方案 5:
另一个解决方案是创建该文件的符号链接,例如:
mymodule.c: ln -sf mymodule.c _mymodule.c
现在,用作_mymodule.o
对象名称:
mymodule-objs := _mymodule.o
解决方案 6:
如果有人在使用Xilinx SoC和petalinux时偶然发现了这个问题,请注意生成的 .bb (bitbake) 文件。除了在 Makefile 中指定目标文件外:
modulename-objs+= src1.o src2.o
所有文件(包括标题)都必须在 modulename.bb 文件的变量中列出SRC_URI
。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD