arm-eabi-gcc:无法执行二进制文件

arm-eabi-gcc:无法执行二进制文件

我正在尝试专门从 AOSP 5.1.1 构建 ROM(Nexus 7 - 石斑鱼)。然而,不久前我在构建内核时陷入了这部分。

以下命令工作正常:make tegra3_android_defconfig 当我写入时问题就开始了:make -j4

它崩溃并说:

Fahads-MBP:tegra Fahad$ make -j4
/volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc:/volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilts/ gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc:无法执行二进制文件
      CHK include/linux/version.h
      CHK包括/生成/utsrelease.h
      UPD包括/生成/utsrelease.h
      HOSTCC 脚本/基本/fixdep
      生成 include/ generated/mach-types.h
      CC 内核/bounds.s
    /bin/sh: /volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc: 无法执行二进制文件
    make[1]: *** [kernel/bounds.s] 错误 126
    make: *** [prepare0] 错误 2

    #### make 无法构建某些目标(2 秒)####

我运行了命令

chmod 777 ARM-eabi-gcc

chmod +x arm-eabi-gcc

但还是没有用。它给出了相同的无法执行二进制文件错误。有什么建议么?

答案1

“无法执行二进制文件”与权限无关,因此对chmod您没有帮助。

(哦,永远不要使用chmod 777。这永远不是解决方案。如果您尝试执行某些操作并且错误是“权限被拒绝”,则添加执行权限:chmod a+x。)

此消息意味着您有一个内核无法识别为有效程序格式的二进制文件(不是脚本)。根据目录名称linux-x86,这是一个 x86 可执行文件。

根据提示,您似乎正在尝试在 ARM 平板电脑本身上构建内核。您无法在 ARM 处理器上运行 x86 可执行文件。您需要 ARM 的编译器二进制文件,而 Android 树中不存在这些编译器二进制文件。最简单的解决方案是在 PC 上进行构建。如果您确实想在平板电脑上进行构建,请获取适当的编译器二进制文件(针对正确的 libc;ARM 平台上有许多不同的 ABI,识别正确的 ABI 可能有点困难)。

相关内容