С исходным кодом AOSP 9.0.0_r30 сначала используйте эти команды для вывода
подробный журнал сборки во время сборки:
make clean
make showcommands -j8 > ~/BuildAndroid.txt
Затем найдите в ~/BuildAndroid.txt
слово "lld" (полное совпадение слов). Я ничего не могу найти. У компоновщика Clang должно быть ключевое слово lld. Поиском «ld» будет 50 результатов, но они вряд ли являются командами ссылки. Одним из них является «ld.mc», который является кандидатом.
И найдите имя исходного файла cpp, например, «TextDropShadowCache». Я получаю только 2 команды, обе из которых являются командами компиляции clang ++.
Команда ссылки libhwui.so ссылается на файл "libhwui.so.rsp", который, возможно, содержит (только предположение), что содержит "TextDropShadowCache.o":
prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++ /OpenSource/Build/Android/9.0.0_r30/soong/.intermediates/bionic/libc/crtbegin_so/android_x86_64_core/crtbegin_so.o @/OpenSource/Build/Android/9.0.0_r30/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_x86_64_core_shared/libhwui.so.rsp ......
Если это правда, то как получается libhwui.so.rsp?
Команда также вызывает этот вопрос: Что означает @ в этой команде clang в журнале сборки AOSP?
в соответствии с вышеприведенным вопросом, @ означает чтение длинной команды из файла, поэтому весьма вероятно, что это файл, в котором перечислены все файлы obj, которые необходимы libhwui.so.
Таким образом, проблема в основном решена, но не подтверждена, поскольку libhwui.so.rsp, похоже, удаляется после сборки.
Как система сборки AOSP 9.0 связывает исполняемый файл?