title: How to use c++0x thread in Android NDK?
body: <p>I am trying to compile this simple program with <code>android-ndk-r8b</code>:<br />
  <strong>jni/hello_jni.cpp</strong></p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;thread&gt;
  
  void hello()
  {
      std::cout &lt;&lt; "Hi i'm a thread!!!" &lt;&lt; std::endl;
  }
  
  int main()
  {
      std::thread th(hello);
      th.join();
      return 0;
  }
  </code></pre>
  
  <p><strong>jni/Application.mk</strong></p>
  
  <pre><code>APP_OPTIM := release
  APP_MODULES := hello_thread
  APP_STL := gnustl_static
  </code></pre>
  
  <p><strong>jni/Android.mk</strong></p>
  
  <pre><code>LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  
  LOCAL_CPPFLAGS   += -std=c++0x -frtti
  
  LOCAL_MODULE     := hello_thread
  LOCAL_LDLIBS     := -L$(SYSROOT)/usr/lib -pthread
  LOCAL_SRC_FILES  := hello_thread.cpp
  
  include $(BUILD_EXECUTABLE)
  </code></pre>
  
  <p><strong>ndk-build</strong> returns me an error arguin that 'thread' is not a member of 'std'.
  I issued <strong>ndk-build -n</strong> to get the compilation command and issued it alone in my shell:</p>
  
  <pre><code>/home/evigier/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -MMD -MP -MF /home/evigier/eclipse_workspace/hello_thread/obj/local/armeabi/objs/hello_thread/hello_thread.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -I/home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include -I/home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include -I/home/evigier/eclipse_workspace/hello_thread/jni -DANDROID  -Wa,--noexecstack -std=c++0x -frtti  -O2 -DNDEBUG -g   -I/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include -c  /home/evigier/eclipse_workspace/hello_thread/jni/hello_thread.cpp -o /home/evigier/eclipse_workspace/hello_thread/obj/local/armeabi/objs/hello_thread/hello_thread.o 
  Compile++ thumb  : hello_thread &lt;= hello_thread.cpp
  In file included from /home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/stdio.h:55:0,
                   from /home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/wchar.h:33,
                   from /home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/cwchar:46,
                   from /home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/postypes.h:42,
                   from /home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/iosfwd:42,
                   from /home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/ios:39,
                   from /home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/ostream:40,
                   from /home/evigier/android-ndk-r8b/sources/cxx-stl/gnu-libstdc++/4.6/include/iostream:40,
                   from jni/hello_thread.cpp:4:
  /home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/sys/types.h:124:9: error: 'uint64_t' does not name a type
  /home/evigier/eclipse_workspace/hello_thread/jni/hello_thread.cpp: In function 'int main()':
  /home/evigier/eclipse_workspace/hello_thread/jni/hello_thread.cpp:14:5: error: 'thread' is not a member of 'std'
  /home/evigier/eclipse_workspace/hello_thread/jni/hello_thread.cpp:14:17: error: expected ';' before 'th'
  /home/evigier/eclipse_workspace/hello_thread/jni/hello_thread.cpp:15:5: error: 'th' was not declared in this scope
  </code></pre>
  
  <p>I read a lot of threads/questions about POSIX threads and C++ threads, but still cannot find my answer. My <code>arm-linux-androideabi/include/c++/4.6/thread</code> file defines <code>class thread</code> in <code>std</code> only:</p>
  
  <pre><code>#if defined(_GLIBCXX_HAS_GTHREADS) &amp;&amp; defined(_GLIBCXX_USE_C99_STDINT_TR1)
  </code></pre>
  
  <p>They don't seem to be defined in my sdk (c++config.h). But how can I possibly turn them on safely? Do i need to compile my own toolchain to use (non-p)threads? My host computer is :</p>
  
  <pre><code>Linux evigier-ThinkPad-X220 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
  </code></pre>