安卓CMake和ndk-build生成不同大小的文件



我正在尝试看看我们是否可以合理地从ndk构建迁移到cmake,以构建我们的android C++库。

当我构建与ndk构建完全相同的代码以获得静态库(.a(时,它会生成542k文件,而cmake会生成1.7Mb文件。

我使用boost进行测试构建,只构建文件系统部分。

两者都是发布版本。

我搜索了一下是否有必要的特定开关来获得大致相同的编译,但没有成功。

我使用ndk版本19进行构建,并使用相关的工具链文件。

这是已知的问题吗?

CMake和ndk-build不一定使用相同的标志。静态库没有被剥离,因此对应用程序无关紧要的额外调试信息可能会占用大量空间。

如果最终在APK中的.so文件(实际上已经被剥离的文件(仍然很大,请使用https://github.com/google/bloaty将两者进行比较,看看二进制文件的哪些部分更大。

使用cmake不剥离调试符号,我的ndk版本21.3.6528147。使用strip命令剥离调试符号,例如

#for arm64-v8a
<ndk-path>/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-strip-s -v youlib.so
#for armeabi-v7a
<ndk-path>/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-strip -s -v youlib.so

另请参阅如何在Android 上为cmake启用剥离

最新更新