Я пытаюсь скомпилировать простой модуль ядра. У меня есть полностью скомпилированное ядро, и uname -r
действительно подтверждает, что я запускаю ядро, которое я скомпилировал.Проблема с компиляцией простого модуля ядра
У меня есть небольшой Makefile, который делает работу следующим образом:
obj-m := exo1_simple_module.o
all:
make -C /lib/modules/$(uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(uname -r)/build M=$(PWD) clean
С файл называется exo1_simple_module.c
и он находится в директории /home/tom/work/kernel_modules
Когда я бегу сделать я получаю ошибку :
No rule to make target '/home/tome/work/kernel_modules/ex01_simple_module.c needed by /home/tom/work/kernel_modules/exo1_simple_module.o
Как-то я думаю, что есть опция switch или command, которую я должен указывать gcc, что есть отсутствует.
вы не составителя в любом месте в пределах Makefile (вы не ссылаетесь на то, как заставить '.c' превращаться в' .o'), и у вас нет раздела 'modules' в вашем файле makefile, чтобы он не сработал. – KevinDTimm
PS Я бы отредактировал ваше сообщение, чтобы сделать его более разборчивым, но кто-то его отредактировал, и поэтому другие изменения не разрешены до тех пор, пока его изменения не будут одобрены/отклонены. – KevinDTimm
Благодарим вас за ответ. Я видел другие Makefiles для модулей ядра, и не было ссылки на то, как получить .c, чтобы превратиться в .o. OBJ-M + = hello.o всего: делают -C/Библиотека/модули/$ (uname -r оболочки)/строить/М = $ (PWD) модули чистые: делают -C/Библиотека/модули/$ (shell uname -r)/build/M = $ (PWD) clean –