Сборка модуля Linux -sys/time.h:Нет такого файла или каталога

Я пытаюсь собрать старый драйвер Linux в своей системе (Kubuntu 21.10)с make -C....
Драйвер объявляет static struct timeval frame_timestamp;

. Если я попытаюсь собрать его с чем-то вроде

make -C /lib/modules/`uname -r`/build M=`pwd` V=1  modules

, я получаю ошибку ... has an incomplete type ‘struct timeval’и некоторые другие связанные ошибки.
Поэтому я считаю, что должен включить sys/time.h с #include <sys/time.h>в код.
Но в этом случае я получаю fatal error: sys/time.h: No such file or directory. И я не могу найти способ решить эту проблему. (В коде уже были некоторые включения, но ни одного из sys/, все они из linux/ и media/)

В итоге я получил следующееMakefile:

obj-m := mydriver.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) M=$(PWD) V=1 modules

KDIRразрешается в /lib/modules/5.13.0-21-generic/build, которое ссылается на /usr/src/linux-headers-5.13.0-21-generic. Нет sys/time.h.

locate sys/time.hвозвращает :

/usr/include/i386-linux-gnu/sys/time.h
/usr/include/sys/time.h
/usr/include/x86_64-linux-gnu/sys/time.h

, который принадлежит libc6-devи libc6-dev-i386:.
dpkg -l *5.13.0-21*дает:

ii  linux-headers-5.13.0-21                5.13.0-21.21 all          Header files related to Linux kernel version 5.13.0
ii  linux-headers-5.13.0-21-generic        5.13.0-21.21 amd64        Linux kernel headers for version 5.13.0 on 64 bit x86 SMP
ii  linux-image-5.13.0-21-generic          5.13.0-21.21 amd64        Signed kernel image generic
un  linux-image-unsigned-5.13.0-21-generic <нет>        <нет>        (описание недоступно)
ii  linux-modules-5.13.0-21-generic        5.13.0-21.21 amd64        Linux kernel extra modules for version 5.13.0 on 64 bit x86 >
ii  linux-modules-extra-5.13.0-21-generic  5.13.0-21.21 amd64        Linux kernel extra modules for version 5.13.0 on 64 bit x86

Я пытался жестко закодировать -I /usr/include/x86_64-linux-gnu/в make -C-, это не имеет никакого эффекта.
Я также пытался загрузить ванильное ядро ​​​​с kernel.org:https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.13.tar.xz и жестко закодировать его как KDIR-, что не помогает, и оно также не содержит sys/time.h.

Вопрос :в том, как заставить процесс сборки моего модуля видеть sys/time.h?
Разрешается ли модулю linux связываться с libc? Если это не часть ядра, как сделать его доступным для процесса сборки модуля?

0
задан 9 December 2021 в 13:34

0 ответов

Другие вопросы по тегам:

Похожие вопросы: