使用不同于 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)。
我正在编写一个依赖于 APP_STL := c++_static
但是,构建静态库的特定模块不会编译,除非使用 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)。