如何在Android上静态编译C++运行时到NDK/JNI库? 我想编译一个库静态,但也可以用C++编写,这样就可以静态地包含我在库中使用的所有C++运行时功能,即另一个项目可以简单地包含我的..O.so文件,而不必担心其他的依赖关系。如何使用NDK/Android构建系统实现这一点

如何在Android上静态编译C++运行时到NDK/JNI库? 我想编译一个库静态,但也可以用C++编写,这样就可以静态地包含我在库中使用的所有C++运行时功能,即另一个项目可以简单地包含我的..O.so文件,而不必担心其他的依赖关系。如何使用NDK/Android构建系统实现这一点,android,c++,android-ndk,Android,C++,Android Ndk,到目前为止,我已经 APP_STL := c++_static 在my Application.mk中,使用 include $(BUILD_STATIC_LIBRARY) 在我的Android.mk中设置项目后。但是,如果我随后将生成的库拉入第二个项目,例如,未指定STL(例如纯C)的动态库,我会收到大量未找到的符号链接器错误。只有当我指定在第二个项目中使用c++u static STL时,这些错误才会消失,表明c++u static没有被拉入第一个库。我知道这并不奇怪,但这不是我想要的行

到目前为止,我已经

APP_STL := c++_static
在my Application.mk中,使用

include $(BUILD_STATIC_LIBRARY)
在我的Android.mk中设置项目后。但是,如果我随后将生成的库拉入第二个项目,例如,未指定STL(例如纯C)的动态库,我会收到大量未找到的符号链接器错误。只有当我指定在第二个项目中使用c++u static STL时,这些错误才会消失,表明c++u static没有被拉入第一个库。我知道这并不奇怪,但这不是我想要的行为


使用好的ol'make文件并自己指定构建标志允许我组合静态库。我的问题是哄骗NDK构建系统去做:

如果你静态编译一个C++运行时到你的库中,很不幸另一个项目不得不担心这个依赖:

如果文件使用静态C++运行时,这可能导致腐败和崩溃,因为运行时使用的全局变量共享。 <>如果你将你的所有LIB和最终的项目编译成一个单一的.so文件,你可以使用一个静态C++运行时,如果它在结束项目中声明,那就更好了。因为强制在您的库中静态包含C++运行时会阻止使用C++运行时的结束项目。