我正在尝试专门从 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 可能有点困难)。