Я пытаюсь скомпилировать модуль. Я могу сделать это, вызвав make, который вызывает
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
Но я хочу увидеть предварительно обработанный вывод, поэтому я пытаюсь скомпилировать вручную с помощью cc -E file.c
. Проблема в том, что он не видит заголовок <linux/init.h>
:
fatal error: linux/init.h: No such file or directory
#include <linux/init.h>
У меня есть уведомление, когда вызывается make, он сначала вводит этот каталог /usr/src/linux-headers-5.0.0-38-generic
, Возможно, есть заголовок, но я не знаю где. Я попытался gcc -E -I'/usr/src/linux-headers-5.0.0-38-generic file.c
, но все еще та же ошибка. Итак, как можно включить заголовки ядра (которые <linux/init.h> is
) в режиме пользователя - то есть, как включить заголовки из другого каталога?
PS: как предложено @uzsolt в комментариях, я добавляю include
к конец пути: gcc -I /usr/src/linux-headers-5.0.0-38-generic/include
. Но тогда отсутствует другой заголовок - <asm/linkage.h>
, и снова - я понятия не имею, в каком каталоге находится этот заголовок.