如何使用armv8l gnueabi交叉编译ARM64的32位Linux内核?

如何使用armv8l gnueabi交叉编译ARM64的32位Linux内核?,linux,32-bit,arm64,armv8,Linux,32 Bit,Arm64,Armv8,我正在编译一个32位Linux内核(4.4.x)以在ARM64设备上运行。我正在使用Linaro提供的armv8l linux gnueabihf gcc 要编译Linux内核,我运行以下命令: # run defconfig with COMPAT enabled to enable EL0 to run 32bit > make defconfig > make 我得到以下错误: ./arch/arm64/include/uapi/asm/ptrace.h:76:2:错误:未知

我正在编译一个32位Linux内核(4.4.x)以在ARM64设备上运行。我正在使用Linaro提供的armv8l linux gnueabihf gcc

要编译Linux内核,我运行以下命令:

# run defconfig with COMPAT enabled to enable EL0 to run 32bit
> make defconfig
> make
我得到以下错误:

./arch/arm64/include/uapi/asm/ptrace.h:76:2:错误:未知类型名称“\uu uint128\t”

32位GCC编译器似乎不知道如何使用128位变量


如何解决这个问题?

根据我现在对配置兼容选项的理解,这可能会更好,我会说1)如果编译32位内核,您不需要它,因为您无论如何只能运行32位可执行文件2)如果您想使用它,您需要构建64位内核。编译32位内核时,您使用的选项仅在64位内核中有意义,这一事实可以解释为什么会出现与_uint128_t相关的错误。非常感谢您的回答。我同意,没有理由使用32位内核。经过多次查询,ARM似乎也做出了许多更改,在最新内核中阻止了此选项。我知道旧的内核可能支持它,例如RPI3有32位内核。你是说旧的内核在64位模式下编译。我的意思是RPI3有32位内核,而设备是ARMv8