Как мне скомпилировать драйверы / модули ядра для использования в Linux Ubuntu? - PullRequest
1 голос
/ 29 января 2012

Просто чтобы расширить некоторые примеры, вот проблема: Учитывая следующий источник:

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

Теперь просто для тестирования я попробовалновый более простой 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

, как и файл kernel.h

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

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

1 Ответ

1 голос
/ 07 июня 2012

Убедитесь, что строки, начинающиеся с 'make' в вашем Makefile, имеют отступ с помощью символа табуляции.Это строка ниже 'all:', а строка ниже 'clean:' должна начинаться с вкладки.

...