Я часами пытался создать свой первый модуль Hello World Kernel, но, увы, безуспешно. Мой простой код C (hello.c) и makefile находятся в папке /Downloads моей системы, если это имеет какое-то значение.
Привет
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_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) clean
И это сообщение об ошибке, которое я получаю, когда пытаюсь собрать модуль ядра, введя «make» (без кавычек) в терминале:
make -C /lib/modules/4.2.0-16-generic/build
M=/home/username/workspace/test/Module modules make[1]:
Entering directory '/usr/src/linux-headers-4.2.0-16-generic'
scripts/Makefile.build:44:
/home/username/workspace/test/Module/Makefile: No such file or
directory make[2]: *** No rule to make target
'/home/username/workspace/test/Module/Makefile'. Stop.
Makefile:1398: recipe for target
'_module_/home/username/workspace/test/Module' failed make[1]:
*** [_module_/home/username/workspace/test/Module] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.2.0-16-generic'
makefile:4: recipe for target 'all' failed make: *** [all] Error 2
Я перепробовал почти каждое решение и следовал каждому предложению по этой проблеме, которое можно найти в Google. Ничто не могло решить мою проблему ... Если кто-нибудь знает что-нибудь, что я мог бы попробовать, я был бы очень благодарен!
- Должен ли я переместить свой hello.c и makefile в /usr/src?
- Есть ли синтаксические ошибки в моих файлах?
- Должен ли он говорить hello.c вместо hello.o в make-файле?
- Может, в моем Ubuntu чего-то не хватает?
- ...
.ko
не создается. - person cadaniluk   schedule 28.10.2015