AOSP 9.0构建系统如何链接可执行文件?

时间:2019-03-26 03:41:20

标签: build android-source

对于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是如何产生的?

该命令还会引发以下问题:What does @ mean in this clang command in AOSP build log?

根据上述问题,@表示从文件中读取一条长命令,因此很有可能是一个列出libhwui.so需要的所有obj文件的文件。

因此,该问题基本上得到了解决,但尚未得到验证,因为libhwui.so.rsp似乎在构建后已删除。

AOSP 9.0构建系统如何链接可执行文件?

1 个答案:

答案 0 :(得分:0)

我找到了pppd的链接命令行,它只是使用

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

将所有.o / .a / .so文件作为输入,并将pppd作为输出。

但这仍然不能解释为什么没有链接命令使用TextDropShadowCache.o作为输入,也许它们使用某些脚本读取多个.o文件?

相关问题