为什么只在Android上运行静态构建?

时间:2017-02-14 16:02:36

标签: android android-ndk shared-libraries glibc bionic

我为Android构建了一些应用程序而不使用Android studio& NDK

我注意到如果我在没有"-static"参数的情况下构建它们,那么Android就无法运行它们。

我无法在任何地方找到记录的原因,但我猜这与Android使用Bionic而不是glibc的事实有关。

是因为Bionic libc需要静态构建,(与“标准Linux”glibc相比,它也可以处理动态构建)?如果是这样,那么文件系统中有.so文件是怎么回事。

谢谢。

1 个答案:

答案 0 :(得分:3)

你是对的,你需要-static的原因是因为 Bionic glibc 不是100%兼容。

您可以使用NDK工具链来构建应用,然后您可以删除-static

如果您不想学习 ndk-build 系统并在 Android.mk 中使用 include $(BUILD_EXECUTABLE)文件,在NDK is well documented中使用独立工具链。