linux - 编译内核模块时没有规则使target 'lib/sha256.c'错误

标签 linux kernel-module

我正在尝试在 Fedora 28 中编译内核模块。我当前的内核是 4.17.3-200.fc28.x86_64。我的 hello.c 是

#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_2_init(void)
{
 printk(KERN_INFO "Hello, world 2\n");
 return 0;
}
static void __exit hello_2_exit(void)
{
 printk(KERN_INFO "Goodbye, world 2\n");
}
module_init(hello_2_init);
module_exit(hello_2_exit);

我的 Makefile 是

obj−m += hello.o

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

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

我在尝试编译时遇到此错误。最初我认为错误是由于 ssl 库。所以我为 fedora 安装了 openssl-devel。但我仍然遇到同样的错误。

make -C /lib/modules/4.17.3-200.fc28.x86_64/build M= modules
make[1]: Entering directory '/usr/src/kernels/4.17.3-200.fc28.x86_64'
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[2]: *** No rule to make target 'lib/sha256.c', needed by 'arch/x86/purgatory/sha256.o'.  Stop.
make[1]: *** [arch/x86/Makefile:263: archprepare] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.17.3-200.fc28.x86_64'
make: *** [Makefile:4: all] Error 2

我该如何解决这个错误?

最佳答案

obj-m   := FILENAME.o

KERNELDIR ?= /lib/modules/$(shell uname -r)/build  <br/>
PWD       := $(shell pwd)

all: 
      default

default:  
      $(MAKE) -C $(KERNELDIR) M=$(PWD) modules


clean:
      rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions 



尝试这个 Makefile 或在控制台中编写:

make -C /lib/modules/`uname -r`/build M=`pwd` modules obj-m=FILENAME.o

将 FILENAME 替换为您的文件名!

关于linux - 编译内核模块时没有规则使target 'lib/sha256.c'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51153261/

相关文章:

node.js - 调用 node app.js 时出错,[node js socket io]如何修复?

linux - 如何在嵌入式 Linux (ARM) 中读取/写入通过 SPI 连接的闪存?

linux - 使用 udev 规则在内核模块加载和卸载上创建和删除设备节点

c - 如何在内核编程中执行shell命令?

linux - awk 将命令输出保存到变量

c++ - inotify 多次错误地通知新文件

linux - 手册页中 Unix 命令名称后括号中的数字是什么意思?

linux - 在 find 中将每个参数传递给 -exec 后的状态

linux-kernel - 如何从内核模块访问(打开/读取/等)/dev 设备?

c - Netlink 组播内核组