Как включить стандартные заголовочные файлы при компиляции исходного кода модуля ядра? - PullRequest
2 голосов
/ 21 июня 2011

Я скачал, скомпилировал и установил последнее ядро ​​на моей машине. Теперь я пытаюсь написать модуль ядра. Когда я пытаюсь его скомпилировать, я получаю ошибки следующего вида: фатальная ошибка: sys / syscall.h: нет такого файла или каталога фатальная ошибка: linux / module.h: нет такого файла или каталога Я попытался переписать make-файл для этого, включив в него необходимые каталоги из источника моего последнего ядра, но проблема все еще сохраняется.

Требуются ваши предложения.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Вы не можете использовать заголовки libc в ядре.

Более того, вы, похоже, включили syscall.h. Системные вызовы по своей природе являются вызовом пользовательского пространства. Нет необходимости в системных вызовах внутри ядра.

Хотя включение для linux / module.h должно работать. Не могли бы вы дать нам используемый вами Makefile?

0 голосов
/ 22 июня 2011

Ваш Makefile должен выглядеть примерно так.

hello.ko: hello.c
  make ARCH=um -C "/home/abhijit/play/kernel/linux-2.6" M=`pwd` modules

obj-m:= hello.o
objs:= hello.o

, и в вашем исходном файле должны быть определены module_init и module_exit. У вас есть эти вещи?

...