Нет правила делать целевую ошибку 'lib / sha256.c' при компиляции модуля ядра - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь скомпилировать модуль ядра в 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. Поэтому я установил openssl-devel для fedora. Но я все еще получаю ту же ошибку.

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

Как я могу решить эту ошибку?

1 Ответ

0 голосов
/ 04 июля 2018
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 именем вашего файла!

...