1. 程式人生 > >Android 7.1 使用mmm編譯模組失敗

Android 7.1 使用mmm編譯模組失敗

平臺:

RK3288 + android 7.1

問題:

rk3288_n712$ mmm frameworks/base/cmds/app_process/

....
Starting build with ninja
ninja: Entering directory `.'
ninja: error: 'out/target/product/rk3288/system/bin/linker_asan', needed by 'out/target/product/rk3288/system/bin/asan/app_process32', missing and no known rule to make it
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1

#### make failed to build some targets (19 seconds) ####

提示這個模組/檔案沒找到:out/target/product/rk3288/system/bin/linker_asan
rk3288_n712$ ll out/target/product/rk3288/system/bin/linker_asan
ls: cannot access 'out/target/product/rk3288/system/bin/linker_asan': No such file or directory
確實沒有.

分析:

    單獨編譯不能通過? 但是全部編譯卻可以成功, 這種問題之前也遇到過, 只是一直忽略它.
    按舊版本的SDK編譯解決方案, 找出linker_asan這個模組, 並編譯它, 可惜, 搜尋全部模組, 也找不到它.

無意間, 在檢視najia指令碼中發現了點端倪.

|-- out/build-rk3288.ninja: 
command = /bin/bash -c "(rm -rf out/target/product/rk3288/system/bin/linker_asan ) && (ln -sf linker out/target/product/rk3288/system/bin/linker_asan )"

什麼意思?
linker_asan 只是linker的軟鏈

解決:

ln -sf linker out/target/product/rk3288/system/bin/linker_asan
執行後再編譯, 問題解決:

rk3288_n712$ mmm frameworks/base/cmds/app_process/
Running kati to generate build-rk3288-mmm-frameworks_base_cmds_app_process_Android.mk.ninja...
[100% 15/15] Install: out/target/product/rk3288/system/bin/asan/app_process32

#### make completed successfully (39 seconds) ####