Как мне скомпилировать модуль ядра Linux - PullRequest
2 голосов
/ 30 января 2012

Я не могу скомпилировать модуль ядра Linux,

Учитывая следующий источник:

/* hello.c */

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

int init_module(void)
{
printk(KERN_INFO "Hello world\n");
return 0;
}

void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world\n");
}

/* end of hello.c */

и следующий 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 files, я получаю сообщение: «Ничего не нужно делать для` all '. Компиляция, похоже, на этом останавливается и объектный файл не создается.

Теперь только для тестирования, Я попробовал новый более простой Makefile: TARGET: = hello $ {TARGET} .o: $ {TARGET} .c

Запуск make дает мне новую ошибку: hello.c: 1: фатальная ошибка: linux /module.h: нет такого файла или каталога.

, однако этот файл доступен в папке:

/usr/src/linux-headers-2.6.35-22/include/linux 

, а также в

/usr/src/linux-headers-2.6.35-22-generic/include/linux

, как и ядро.h file

Чего мне не хватает, есть идеи?

Заранее спасибо

1 Ответ

3 голосов
/ 30 января 2012

Вам не хватает вкладки между началом строки и "make -C ..."

...