それらのパフォーマンス/安定性が互いに異なるかどうか、およびライセンスが簡単に説明されているかどうかを知りたい. リアルな体験も大歓迎です。
2 に答える
昨日 (NDK r9d) の時点で、gnustl はさらに包括的でした (例: <thread>、<future>、およびその他の C++11 機能のサポート)。これらもツールチェーンに依存します。デフォルトの ARM gcc 4.6 を使用して有効にすることはできませんでした。
OTOH、stlport ライセンスは、AOSP の残りの部分と同様に、ナンセンスなフリーですが、gnustl の GPL v3 へのリンクの例外は理解しにくいものです。古い議論については、https://groups.google.com/d/topic/android-ndk/OWl_orR0DRQを参照してください。
NDK のリリース ノートを見ると、修正されたバグに関して、これら 2 つの STL 実装はほぼ同等であることがわかります。
パフォーマンスのベンチマークが見られるのは嬉しいことですが、個人的には、STL 実装のバリエーションによって実際のボトルネックが解決されたという状況に遭遇したことはありません。
GNU STLは GPLv3 ライセンスの下で配布されていますが、これは一部の人には受け入れられません。NDK は STLport も提供しており、代わりに使用することもできますが、スタンドアロン ツール チェーンには含まれていないため、少し複雑です。
デフォルトでは、NDK ツールチェーンは C++ 共有ライブラリを GNU STL ライブラリの静的バージョンにリンクします。ただし、複数の共有ライブラリを使用している場合、共有ライブラリのそれぞれに独自の STL のコピーがあるため、STL の静的バージョンにリンクすることはできません。これにより、STL で定義されたグローバル変数の複数のコピーが作成され、メモリ リークや破損が発生する可能性があります。
重要: NDK ツールチェーンを直接使用すると、重大な制限があります。C++ STL (STLport または GNU libstdc++) を使用することはできません。また、例外も RTTI もありません。