Hi Jack, I'm almost there with Android..... I've actually got the static and dynamic libraries built. I'm choking on the test suite. Do you want to take a shot at working around Android and [embedded, lame] STLport? I would try removing the call to rend() in std::map<_Key, _Tp, _Compare, _Alloc>::rend(). But I really should not modify program code. Fiddling with a Makefile is one thing, but modifying source code is another. Jeff arm-linux-androideabi-g++ --sysroot=/opt/android-ndk-r8e//platforms/android-14/arch-arm -I/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/ -Ibuild/include -O2 -D_REENTRANT -Wno-long-long -fpermissive -W -Wall -c checks/bench.cpp -o build/checks/bench.o checks/bench.cpp: In function 'void (anonymous namespace)::report_results(const string&, const std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>&)': checks/bench.cpp:157:102: error: no match for 'operator!=' in 'i !std::map<_Key, _Tp, _Compare, _Alloc>::rend() [with _Key = double, _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char>>, _Compare = std::less<double>, _Alloc std::allocator<std::pair<double const, std::basic_string<char,std::char_traits<char>, std::allocator<char> > > >, std::map<_Key, _Tp, _Compare, _Alloc>::reverse_iterator std::reverse_iterator<std::priv::_Rb_tree_iterator<std::pair<double const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_MapTraitsT<std::pair<double const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >]()' checks/bench.cpp:157:102: note: candidates are: /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: note: template<class _Tp, class _Alloc> bool std::operator!=(const std::deque<_Tp, _Alloc>&, const std::deque<_Tp, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: note: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator!=(const std::multimap<_Key, _Tp, _Compare, _Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: note: template<class _Key, class _Tp, class _Compare, class _Alloc> bool std::operator!=(const std::map<_Key, _Tp, _Compare, _Alloc>&, const std::map<_Key, _Tp, _Compare, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: note: template<class _Key, class _Compare, class _Value, class _KeyOfValue, class _Traits, class _Alloc> bool std::operator!=(const std::priv::_Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc>&, const std::priv::_Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: note: template<class _Tp, class _Alloc> bool std::operator!=(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_istreambuf_iterator.h:118:24: note: template<class _CharT, class _Traits> bool std::operator!=(const std::istreambuf_iterator<_CharT, _Traits>&, const std::istreambuf_iterator<_CharT, _Traits>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_string_operators.h:473:1: note: template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const std::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_string_operators.h:465:1: note: template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const _CharT*, const std::basic_string<_CharT, _Traits, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_string_operators.h:425:1: note: template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const std::basic_string<_CharT, _Traits, _Alloc>&, const std::basic_string<_CharT, _Traits, _Alloc>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_alloc.h:384:24: note: template<class _T1, class _T2> bool std::operator!=(const std::allocator<_T1>&, const std::allocator<_T2>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_iterator.h:124:24: note: template<class _Iterator> bool std::operator!=(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_pair.h:92:24: note: template<class _T1, class _T2> bool std::operator!=(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_deque.h:247:1: note: template<class _Tp> bool std::priv::operator!=(const std::priv::_Deque_iterator_base<_Tp>&, const std::priv::_Deque_iterator_base<_Tp>&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_bvector.h:150:25: note: bool std::priv::operator!=(const std::priv::_Bit_iterator_base&, const std::priv::_Bit_iterator_base&) /opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_bvector.h:150:25: note: no known conversion for argument 1 from 'std::map<double, std::basic_string<char, std::char_traits<char>, std::allocator<char> >>::const_reverse_iterator {akastd::reverse_iterator<std::priv::_Rb_tree_iterator<std::pair<double const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_ConstMapTraitsT<std::pair<double const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >}' to 'const std::priv::_Bit_iterator_base&'