android - 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]
- 失败 - 构建结束时间:2018 年 10 月 30 日 11:08:39 构建总时间:00:00:01
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
解决方案
我也遇到了这个问题。我在这里找到了解决方案: 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) \
推荐阅读
- enums - 如何使用 SwiftUI 中的滑块更改具有枚举类型的变量?
- excel - 一次检查多个 Excel 工作表
- python - 可微分旋转卡尺处理 PyTorch
- java - 为什么在 Android Studio 上出现线性 Layot XML 错误?
- powershell - 在自己的组中递归移动文件夹
- android - kotlin-parcelize 显示自动构建错误
- java - 我不断收到 NullPointerException 但不知道为什么
- api - Katalon API 测试:如何传递两个或多个 json 数据
- azure - “Microsoft.Sql/servers/auditingSettings” 要求对非 vnet 存储帐户进行 StorageBlobContributor 访问
- python - 如何通过匹配数据框中的行值来更改列值?