没有这样的文件或目录错误。怎么了?

时间:2017-06-19 19:47:43

标签: c linux makefile module kernel

我正在尝试构建内核模块。我在fedora 25

这是我的Makefile:

obj-m += simple.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

这是simple.c文件:

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

/* This function is called when the module is loaded. */
int simple_init(void)
{
   printk(KERN_INFO "Loading Module\n");

   return 0;
}

/* This function is called when the module is removed. */
void simple_exit(void) {
printk(KERN_INFO "Removing Module\n");
}

/* Macros for registering module entry and exit points. */
module_init( simple_init );
module_exit( simple_exit );

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Simple Module");
MODULE_AUTHOR("SGG");

使用make命令后出现的错误:

make -C /lib/modules/4.11.3-202.fc25.x86_64/build M=/home/nubian/Downloads/ch02/ch2 modules
make[1]: *** /lib/modules/4.11.3-202.fc25.x86_64/build: No such file or directory.  Stop.
Makefile:7: recipe for target 'default' failed
make: *** [default] Error 2

1 个答案:

答案 0 :(得分:0)

当您调用递归make时,应始终使用$(MAKE) never make。然而,这不是你的问题。

您的问题是您没有安装当前运行的内核的模块构建环境。如果安装它,它将创建为内核构建模块所需的目录。

例如,请参阅this page上的yum install命令。