Здравствуйте!
Есть такая проблема: не могу скомпилировать файл драйвера на Ubuntu.
Небольшой опыт в разработке есть, но там была другая ОС и версия ядра 2.4.
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
static int hello_init(void) {
printk("<1> Hello world!\n");
return 0;
}
static void hello_exit(void) {
printk("<1> Bye, world\n");
}
module_init(hello_init);
module_exit(hello_exit);
Далее варианты Makefile-ов и реакция системы на них.
1.
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
user@user:~/Рабочий стол/hello$ make
make: Цель `all' не требует выполнения команд.
2.
CC:= gcc
NAME:= hello
CFLAGS:= -O2 -Wall
MODFLAGS:= -D__KERNEL__ -DMODULE -I/lib/modules/$(shell uname -r)/build/include
$(NAME).o: $(NAME).c
$(CC) $(CFLAGS) $(MODFLAGS) -c $(NAME).c
user@user:~/Рабочий стол/hello$ make
gcc -O2 -Wall -D__KERNEL__ -DMODULE -I/lib/modules/2.6.35-32-generic/build/include -c hello.c
In file included from /lib/modules/2.6.35-32-generic/build/include/linux/list.h:6,
from /lib/modules/2.6.35-32-generic/build/include/linux/module.h:9,
from hello.c:2:
/lib/modules/2.6.35-32-generic/build/include/linux/prefetch.h:14: fatal error: asm/processor.h: Нет такого файла или каталога
compilation terminated.
make: *** [hello.o] Ошибка 1
Здесь проблема в том, что если пройти по этим путям, то в них нет каталога asm, а есть asm-generic хотя в хедерах в инклюдах указываются пути в файлам типа - asm/processor.h.
Что написать в Makefile, чтобы всё компилировалось???