首页 > 解决方案 > Ubuntu14.04 第一次在 QCOM 平台上制作整个 Android 8.1 或 9 项目失败并出现 abl.elf

问题描述

我第一次在 QCOM 平台上做 Android N 或 P 项目,它立即失败,错误如下:

[0% 106/102275] 构建/目标/产品/XXXX/abl.elf 失败:out/target/product/XXXX/abl.elf /bin/bash -c "make -j4 -C bootable/bootloader/edk2 BOOTLOADER_OUT =../../../out/target/product/XXXX/obj/ABL_OBJ 所有 BUILD_SYSTEM_ROOT_IMAGE=1 VERIFIED_BOOT=0 VERIFIED_BOOT_2=1 VERIFIED_BOOT_LE=0 USER_BUILD_VARIANT=0 DISABLE_PARALLEL_DOWNLOAD_FLASH=0 CLANG_BIN=/home/abc/3tb_volume/projects /PROJECT_QP/vendor/qcom/proprietary/llvm-arm-toolchain-ship/6.0/bin/CLANG_PREFIX=/home/abc/3tb_volume/projects/PROJECT_QP/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android- 4.9/bin/aarch64-linux-android-ABL_USE_SDLLVM=true ABL_SAFESTACK=true SAFESTACK_SUPPORTED_CLANG_VERSION=6。0 CLANG_GCC_TOOLCHAIN=/home/abc/3tb_volume/projects/PROJECT_QP/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 TARGET_ARCHITECTURE=AARCH64 BOARD_BOOTLOADER_PRODUCT_NAME=XXXX"

...

make[1]: * 读取作业管道:错误的文件描述符。停止。make[1]: *等待未完成的工作.... make[1]: 离开目录 '/home/abc/3tb_volume/projects/PROJECT_QP/out/target/product/XXXX/obj/ABL_OBJ/Build/DEBUG_CLANG35/AARCH64 /ArmPkg/库/BaseMemoryLibStm/BaseMemoryLibStm'

build.py ...:错误7000:无法执行命令make tbuild [/home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/../../../out/target/product/XXXX /obj/ABL_OBJ/Build/DEBUG_CLANG35/AARCH64/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm]

build.py ...:错误F002:无法构建模块/home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf [AARCH64,CLANG35,DEBUG]

make: *** [makefile:133: ABL_FV_IMG] 错误 1 ​​make: 离开目录 '/home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2' [0% 109/102275] 目标拇指 C++: memory_replay_tests_32 <= system/extras/memory_replay/Action.cpp ninja:构建停止:子命令失败。11:08:40 忍者失败:退出状态 1

未能建立一些目标 (01:23 (mm:ss))

我已经使用命令检查了“bootable/bootloader/edk2”目录:. edksetup.sh

结果还可以!

abc@abc:~/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2$。edksetup.sh 从 /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/Conf/BuildEnv.sh 加载以前的配置 WORKSPACE: /home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2 EDK_TOOLS_PATH: / home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/BaseTools CONF_PATH:/home/abc/3tb_volume/projects/PROJECT_QP/bootable/bootloader/edk2/Con

标签: androidlinux

解决方案


我也遇到了这个问题。我在这里找到了解决方案: https ://patchwork.kernel.org/patch/10780137/ 它不是相同的代码,但问题是完全相同的问题。

问题是该命令期望从以前的命令继承文件描述符,但默认情况下在 make 中不会发生这种情况。所以你需要在 edk2 makefile 的那一行添加“+” 这是我用来让它工作的补丁:

--- a/makefile  2019-09-25 13:00:28.064160817 -0500
+++ b/makefile  2019-09-25 13:00:34.957369325 -0500

@@ -129,7 +129,7 @@
    $(MAKEPATH)make -C $(EDK_TOOLS) $(PREBUILT_HOST_TOOLS) -j1

 ABL_FV_IMG: EDK_TOOLS_BIN
-   @. ./edksetup.sh BaseTools && \
+   +@. ./edksetup.sh BaseTools && \
    build -p $(WORKSPACE)/QcomModulePkg/QcomModulePkg.dsc \
    -a $(ARCHITECTURE) \
    -t $(TARGET_TOOLS) \

推荐阅读