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

Compiling android-ndk module with different STL than defined in Application.mk

我正在编写一个依赖于 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++ 运行时编译的共享库。对于静态库也是如此,你也不应该 link 超过一个 C++ 运行时。

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