使用与Application.mk中定义的STL不同的STL编译android ndk模块



我正在编写一个依赖APP_STL := c++_static 的android ndk程序

然而,除非使用gnustl_static,否则构建静态库的特定模块不会编译。

即使我手动添加了必要的路径,例如:

-isystem $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/include

编译失败,因为ndk-build系统预先准备了它被要求使用的stl库路径,在我的例子中是:

-I/opt/android-ndk-r9d/sources/cxx-stl/llvm-libc++/libcxx/include

有没有一种方法可以tell ndk-build使用不同的stl构建一个静态库?或者这根本不可能,因为将一个程序与stl的多个实现链接起来没有意义?

NDK文档指出,不能混合使用针对不同C++运行时编译的共享库。对于静态库也是如此,您也不应该链接到多个C++运行时。

您必须调整您的项目以仅支持一个这样的C++运行时(在您的情况下,是C++_static或gnustl_static)。

最新更新