Ubuntu компилирует модуль ядра впервые - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь скомпилировать простой модуль ядра в первый раз:

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

int init_nodule(void)
{
        printk(KERN_INFO "Hello world1.\n");
        return 0;
}
void cleanup_module(void)
{
        printk(KERN_INFO "Goodbye\n");
}

Я использовал obj-m += hello-1.o (это название модуля), но я получаю ошибку:

obj − m: команда не найдена

Почему это происходит?Я пытался найти решение в Интернете, но ничего, что я нашел, не помогло ..

РЕДАКТИРОВАТЬ: После изменения на основе ответа @Mathieu я получаю следующую ошибку:

> make -C /lib/modules/4.18.0-15-generic/build M=/home/galco modules
make[1]: Entering directory '/usr/src/linux-headers-4.18.0-15-generic'
Makefile:970: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
scripts/Makefile.build:45: /home/galco/Makefile: No such file or directory
make[2]: *** No rule to make target '/home/galco/Makefile'.  Stop.
Makefile:1534: recipe for target '_module_/home/galco' failed
make[1]: *** [_module_/home/galco] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.18.0-15-generic'
makefile:4: recipe for target 'all' failed
make: *** [all] Error 2

1 Ответ

2 голосов
/ 25 июня 2019

Строка obj-m += hello-1.o должна быть помещена в файл с именем Makefile

Так это будет выглядеть так:

obj-m += hello-1.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 из командной строки.

Больше ресурсов: https://qnaplus.com/how-to-compile-linux-kernel-module/

...