gpt4 book ai didi

c - 为内核模块编写 makefile

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:49 25 4
gpt4 key购买 nike

我想写一个内核模块,现在我已经写了一些文件:a.c、b.c、b.h 和 d.h。

a.c 包括 b.h 和 d.h,b.h 也包括 d.h。

我写了一个 Makefile 是这样的:

ifneq ($(KERNELRELEASE),)
mymodule-objs :=a.c b.c
obj-m += a.o b.o
else
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
rm -rf *.o *.mod.c *.symvers *order *.markers *.cmd *-
$(MAKE) -C $(KDIR) M=$(PWD)
clean:
rm -rf *.o *.mod.c *.symvers *order *.markers *.cmd *-
endif

但是不行,我应该怎么写一个正确的Makefile呢?我想在最后得到一个文件名 x.ko。

在我使用“make”命令后,我使用“insmod”给我一条消息:

insmod: ERROR: could not insert module a.ko: Unknown symbol in module

顺便说一下,我使用的是 Ubuntu 14.10。内核是 3.16.0-37-generic

最佳答案

obj-m += a.o b.o

将创建两个模块,a.ko 和 b.ko
如果您想从两者中创建一个模块(我想您这样做是因为 mymodule-objs 行),请将该行替换为

obj-m += mymodule.o

mymodule.o会根据mymodule-objs构建,然后使用modpost转成mymodule.ko
< br/>如前所述,您在 $(MAKE) 行中缺少 modules

关于c - 为内核模块编写 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30643469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com