項目中把Android 10源碼移動到另一個目錄后編譯失敗, 報類似下面的錯誤:
FAILED: out/target/product/xxxx/abl.elf
參考: https://blog.csdn.net/ngyzqf/article/details/82054329 解決了.
錯誤1,abl.elf 編譯失敗是因為源碼編譯后,編譯路徑被記下了,存放在了文件里 bootable/bootloader/edk2/Conf/BuildEnv.sh,解決辦法, 在 bootable/bootloader/edk2 目錄下執行:
rm -rf Conf/BuildEnv.sh unset EDK_TOOLS_PATH . ./edksetup.sh BaseTools
錯誤2: make[3]: *** No rule to make target '/usr/include/x86_64-linux-gnu/bits/predefs.h', needed by 'BasePeCoff.o'. Stop.
解決辦法:把中間文件清掉即可, 進入 bootable/bootloader/edk2/BaseTools 目錄:
make clean
之后重新編譯源碼即可.
思路: 一般這種問題都是一開始源碼編譯后記錄了編譯路徑,更換路徑后去找之前路徑無法找到而報錯, 方法就是清理之前編譯生成的中間文件.
我在編譯中還碰到cmake工程編譯生成的 .cxx 目錄中文件也記錄了上一次編譯路徑等信息,導致更換路徑編譯失敗, 解決方法就是把 .cxx 目錄刪除, 重新編譯就好.