【问题标题】:Compiling kernel modules on Debian 9在 Debian 9 上编译内核模块
【发布时间】:2018-06-28 19:38:53
【问题描述】:

我正在尝试在 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 module debian kernel


    【解决方案1】:

    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;
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      相关资源
      最近更新 更多