在 Android 系统上,C++ 标准库主要有以下几种实现可供选择:
-
GNU Standard C++ Library (libstdc++):
- 这是 GCC 编译器的 C++ 标准库实现。
- 在早期的 Android NDK 中,libstdc++ 是默认的标准库实现。
-
LLVM’s libc++:
- 这是由 LLVM 项目开发的 C++ 标准库实现。
- libc++ 是现代的、符合 C++11 及更高标准的库。
- 自 Android NDK r18 起,libc++ 成为了默认的 C++ 标准库。
-
STLport:
- 这是一个移植的标准模板库实现。
- 在 Android NDK 的早期版本中,STLport 也是可选的 C++ 标准库。
当前使用的标准库
在当前的 Android NDK 中,默认使用的是 LLVM’s libc++。这是因为 libc++ 提供了更好的 C++11、C++14、C++17 以及更新标准的支持,并且与 Clang 编译器(Android NDK 中的默认编译器)配合得很好。
使用方法
在 Android NDK 中使用 libc++ 可以通过配置 CMake 或 ndk-build 脚本来指定。例如,在 CMake 中,可以这样设置:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -stdlib=libc++")
在 ndk-build 中,可以在 Application.mk 文件中指定:
APP_STL := c++_shared
或者:
APP_STL := c++_static
其中 c++_shared
和 c++_static
分别表示使用共享库和静态库版本的 libc++。
总结
在现代 Android 开发中,默认的 C++ 标准库是 LLVM 的 libc++。这是因为它提供了更强的标准支持和与 Clang 编译器的良好兼容性。如果你使用的是较新的 Android NDK,那么 libc++ 将是你的默认选择。