Я использую Ubuntu 12.04. Я записал простому привет мировой модуль ядра (hello.c
). Я записал следующий make-файл для него:
obj-m+=hello.o
KDIR:= /usr/src/linux-headers-3.2.0-24-generic-pae
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order
Но эта ошибка неожиданно возникла, когда я действительно делал из ядра:
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-24-generic-pae'
make[2]: *** No rule to make target `arch/x86/tools/relocs.c', needed
by `arch/x86/tools/relocs'. Stop.
hello.c
и makefile
находятся в /Documents/module_prog
. Я работал make
из того каталога.
Что вызывает эту ошибку и как я могу зафиксировать ее?
В файле make просто измените SUBDIRS=$(PWD)
на M=$(shell pwd)
...
Работает как шарм
Требуются заголовки i386:
sudo apt-get install linux-headers-$(uname -r | sed 's/\(.*\)-[a-z]*/\1/'):i386
Пример:
sudo apt-get install linux-headers-5.4.0-42:i386