根据How does AOSP 9.0 build system link the executable?和What does @ mean in this clang command in AOSP build log?,在链接模块时,AOSP似乎会生成一个.rsp文件,其中包含该模块所需的所有obj文件,并将文件名作为参数传递给链接命令,用于例如:
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 ......
但是.rsp文件似乎在构建后被删除。
问题是,这些文件如何生成以及如何获取这些文件?这可能需要学习和修改构建脚本,而这对我来说是无法实现的。
也许有答案,请阅读提到的.rsp文件中的ninja构建手册。
https://ninja-build.org/manual.html
以下是我复制的信息。
rspfile,rspfile_content如果同时存在(两者),Ninja将使用给定命令的响应文件,即在调用命令之前将所选字符串(rspfile_content)写入给定文件(rspfile),并在命令成功执行后删除该文件。
这在Windows OS上特别有用,在Windows OS中,命令行的最大长度受到限制,必须使用响应文件。