gpt4 book ai didi

makefile - 在 Debian 9 上编译内核模块

转载 作者:行者123 更新时间:2023-12-02 21:48:17 26 4
gpt4 key购买 nike

我正在尝试在 Debian 9 下构建内核模块。我使用安装了必要的软件包

sudo apt-get install build-essential linux-headers-4.9.0-5-amd64

但是当我尝试编译模块时收到以下错误消息:

> make
make -C /lib/modules/4.9.0-5-amd64/build M=/home/sven/tmp/kernel modules
make[1]: Entering directory '/lib/modules/4.9.0-5-amd64/build'
make[1]: *** No rule to make target 'modules'. Stop.
make[1]: Leaving directory '/lib/modules/4.9.0-5-amd64/build'
Makefile:6: recipe for target 'all' failed
make: *** [all] Error 2

问题似乎是没有Makefile

/lib/modules/4.9.0-5-amd64/build

目录。事实上,这个目录是空的......这可能是初学者的问题,但有人知道如何解决这个问题吗?下面列出了内核模块的源代码以及相应的Makefile。

非常感谢您的帮助!

模块的 C 代码:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Homer S.");
MODULE_DESCRIPTION("hmmmm ...");
MODULE_VERSION("1.0")


static int __init
start(void) {
printk(KERN_INFO "\nCHELLAS!\n\n");
return 0;
}


static void __exit
end(void) {
printk(KERN_INFO "\nCIAO!\n\n");
return 0;
}


module_init(start);
module_exit(end);

编译模块的Makefile:

obj-m+=foo.o

KVERSION=$(shell uname -r)

all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

最佳答案

makefile 在较新的 linux-headers 软件包中工作正常,这可能是临时问题或系统上软件包安装的问题。

请注意,您的 .c 代码无法编译:

diff --git a/foo.c b/foo.c
index 97611ef..5769fa7 100644
--- a/foo.c
+++ b/foo.c
@@ -5,7 +5,7 @@
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Homer S.");
MODULE_DESCRIPTION("hmmmm ...");
-MODULE_VERSION("1.0")
+MODULE_VERSION("1.0");


static int __init
@@ -18,7 +18,6 @@ start(void) {
static void __exit
end(void) {
printk(KERN_INFO "\nCIAO!\n\n");
- return 0;
}

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

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