【问题标题】:Compiling a driver for MIPS architecture on 4.4 kernel在 4.4 内核上为 MIPS 架构编译驱动程序
【发布时间】:2017-05-06 10:51:21
【问题描述】:

我正在为 4.4 内核上的 MIPS 架构编译驱动程序。似乎编译器不包括

/linux-4.4.34/include/linux/types.h 

但它包含

/linux-4.4.34/include/uapi/linux/types.h 

因此,我看到以下错误。我没有在驱动程序 makefile 中包含路径 /linux-4.4.34/include/uapi。有人可以解释驱动程序如何包含路径 /include/linux 而不是 /include/uapi/linux 吗?

./arch/mips/include/asm/mipsregs.h:871:33: error: unknown type name 'u16'

【问题讨论】:

  • 你能发布 /arch/mips/include/asm/mipsregs.h:871:33 的内容吗
  • 对于在include/uapi 下包含一个标题,应该使用指令#include <uapi/..>。因此,不可能将此文件与非 uapi 文件混淆。至于 u16 类型,对于 mips,它的定义可以通过以下标头链访问:include/linux/types.h - > include/uapi/linux/types.h -> arch/mips/include/asm/types.h -> include/asm-generic/int-ll64.h。不知道为什么给定的定义在您的情况下不可用。请提供完整的错误消息(带有文件链,其中出现了错误)。
  • u16 类型从未被用户空间 (uapi) 包含的 Linux 头文件声明,而是使用用户空间使用 __u16
  • @Tsyvarev,他们的 Makefile 和调用编译器的命令行可能是错误的。他们很可能正在尝试将其编译为(用户空间)应用程序。 u16 是 Linux 内核的内部类型。用户空间应该使用 __u16
  • @anbu,上下文不够。

标签: c linux-kernel cross-compiling device


【解决方案1】:

在 mipsisa32-be-elf.inc 文件中,给定路径 /kernel/include/uapi in -isystem 编译标志。这有助于解决上述编译问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2018-05-23
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多