Как система сборки AOSP 9.0 связывает исполняемый файл? - PullRequest
0 голосов
/ 26 марта 2019

С исходным кодом 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 связывает исполняемый файл?

1 Ответ

0 голосов
/ 27 марта 2019

Я нашел командную строку ссылки для pppd, она просто использует

prebuilts / clang / host / linux-x86 / clang-4691093 / bin / clang ++

со всеми .o /Файл .a / .so в качестве входных данных и pppd в качестве выходных данных.

Но это по-прежнему не объясняет, почему нет команд связи, использующих TextDropShadowCache.o в качестве входных данных, возможно, они используют какой-либо сценарий для чтения нескольких .oфайлы

...