Ошибка компиляции l oop: неизвестное имя типа '__kernel_time64_t' в заголовках linux - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть программа, которая включает следующие заголовочные файлы:

#include <linux/bpf.h>
#include <linux/in.h>
#include <linux/if_ether.h>
#include <linux/ip.h>

Я использую clang для компиляции программы, с этими добавленными путями включения:

LINUXINCLUDE =  -I. \
                -I/usr/src/linux-headers-5.3.0-28/include   \
                -I/usr/include  \
                -I/usr/src/linux-headers-5.3.0-28/arch/x86/include  \
                -I/usr/src/linux-headers-5.3.0-28/include/uapi  \
                -I/usr/src/linux-headers-5.3.0-28/include/uapi/linux    \
                -I/usr/src/linux-headers-5.3.0-28/include/uapi/asm-generic  \
                -I/usr/include/linux

Затем я получите эту ошибку:

> In file included from xdpsock_kern.c:1: In file included from
> /usr/src/linux-headers-5.3.0-28/include/linux/bpf.h:9: In file
> included from
> /usr/src/linux-headers-5.3.0-28/include/linux/workqueue.h:9: In file
> included from /usr/src/linux-headers-5.3.0-28/include/linux/timer.h:6:
> In file included from
> /usr/src/linux-headers-5.3.0-28/include/linux/ktime.h:24: In file
> included from /usr/src/linux-headers-5.3.0-28/include/linux/time.h:6:
> In file included from
> /usr/src/linux-headers-5.3.0-28/include/linux/seqlock.h:36: In file
> included from
> /usr/src/linux-headers-5.3.0-28/include/linux/spinlock.h:51: In file
> included from
> /usr/src/linux-headers-5.3.0-28/include/linux/preempt.h:78: In file
> included from
> /usr/src/linux-headers-5.3.0-28/arch/x86/include/asm/preempt.h:7: In
> file included from
> /usr/src/linux-headers-5.3.0-28/include/linux/thread_info.h:13: In
> file included from
> /usr/src/linux-headers-5.3.0-28/include/linux/restart_block.h:10: In
> file included from
> /usr/src/linux-headers-5.3.0-28/include/linux/time64.h:10: In file
> included from
> /usr/src/linux-headers-5.3.0-28/include/uapi/linux/time.h:6:
> /usr/src/linux-headers-5.3.0-28/include/uapi/linux/time_types.h:8:2:
> error: unknown type name '__kernel_time64_t'
>         __kernel_time64_t       tv_sec;                 /* seconds */

Я не знаю, какая стратегия правильная, но для 10 последних ошибок, которые я уже решил, я просто добавил необходимые пути включения.

К сожалению, я не не знаю, почему time_types.h ожидает тип __kernel_time64_t, хотя сам заголовок не импортирует posix_types.h, где этот тип определен (https://elixir.bootlin.com/linux/v4.18.20/source/include/uapi/asm-generic/posix_types.h#L90)

Любые идеи, как я могу решить это проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...