【问题标题】:Makefile fails to build kernel module "recipe commences before first target"Makefile 无法构建内核模块“配方在第一个目标之前开始”
【发布时间】:2019-07-15 08:25:38
【问题描述】:

我尝试从 https://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf 构建示例 2.1。

我尝试在谷歌上搜索答案,所有相关线程都归结为 Makefile 被错误复制。所以我尝试重新输入makefile,也尝试了其他人的Makefile。但我不断收到同样的错误。

lkm.c:

#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */

int init_module(void)
{
    printk(KERN_INFO "Hello world 1.\n");
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "Goodbye world 1.\n");
} 

生成文件:

obj-m += lkm.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

这是我得到的错误:

philip@ubuntu:~/test$ make
make -C /lib/modules/5.0.0-20-generic/build M=/home/philip/test modules
make[1]: Entering directory '/usr/src/linux-headers-5.0.0-20-generic'
make[2]: *** No rule to make target '/home/philip/test/lkm.c', needed by '/home/philip/test/lkm.o'.  Stop.
make[1]: *** [Makefile:1605: _module_/home/philip/test] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.0.0-20-generic'
make: *** [Makefile:4: all] Error 2

【问题讨论】:

  • 不确定这对您是否重要,但您的名字可能会出现在您发布的那个堆栈中。
  • 没问题。我知道。
  • 你安装内核头文件了吗?
  • linux-headers-5.0.0-20-generic 已安装
  • make V=1而不是make放在上面Makefile的目标all:中并提供输出。

标签: c linux linux-kernel


【解决方案1】:

解决了!我目录中的文件名为 lkm 而不是 lkm.c。感谢您的回复:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    相关资源
    最近更新 更多