我使用的是android-ndk-r10b版本,NDK在7以后就不需要依赖于cygwin了

1. boost官网下载boost_1_55_0.tar.gz,(https://sourceforge.net/projects/boost/files/boost/1.55.0/)解压放在e:\下, 解压后的文件名: boost_1_55_0

2. 启动Windows PowerShell(这个比cmd好些)。

3. 生成boost编译工具: 进入boost目录,运行 bootstrap.bat 生成 b2.exe

4. 修改 <boost>/tools/build/v2/user-config.jam 内容修改如下:

  1. import os ;  

  2.    

  3. if [ os.name ] = CYGWIN || [ os.name ] = NT {  

  4.     androidPlatform = windows-x86_64 ;

  5.     compilerTool = x86-4.6 ;

  6.     androidTargetSys = i686 ;

  7.     androidArch = x86 ;

  8.     androideabi = android ;

  9. }  

  10. else if [ os.name ] = LINUX {  

  11.     androidPlatform = linux-x86_64 ;  

  12. }  

  13. else if [ os.name ] = MACOSX {  

  14.     androidPlatform = darwin-x86 ;  

  15. }  

  16.    

  17. modules.poke : NO_BZIP2 : 1 ;  

  18. #ANDROID_NDK Path

  19. ANDROID_NDK = D:/Android/android-ndk-r10b ;  

  20. using gcc : android4.6 : $(ANDROID_NDK)/toolchains/$(compilerTool)/prebuilt/$(androidPlatform)/bin/$(androidTargetSys)-linux-$(androideabi)-g++ :  

  21. <archiver>$(ANDROID_NDK)/toolchains/$(compilerTool)/prebuilt/$(androidPlatform)/bin/$(androidTargetSys)-linux-$(androideabi)-ar  

  22. <ranlib>$(ANDROID_NDK)/toolchains/$(compilerTool)/prebuilt/$(androidPlatform)/bin/$(androidTargetSys)-linux-$(androideabi)-ranlib  

  23. <compileflags>--sysroot=$(ANDROID_NDK)/platforms/android-9/arch-$(androidArch)  

  24. <compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.6/include 

  25. <compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include 

  26. <compileflags>-DNDEBUG  

  27. <compileflags>-D__GLIBC__  

  28. <compileflags>-DBOOST_FILESYSTEM_VERSION=3  

  29. <compileflags>-lstdc++  

  30. <compileflags>-lgnustl_shared  

  31. <compileflags>-fno-strict-aliasing  

  32. <compileflags>-std=gnu++11  

  33. <compileflags>-O2  

  34. ;  

  35.    

5.在PowerShell控制台,进入boost_1_55_0目录,输入下列命令:

.\b2.exe --without-python --without-mpi --without-serialization toolset=gcc-android4.6 link=static runtime-link=static target-os=linux --stagedir=android threadapi=pthread

等待漫长的boost编译生成 .a 静态库文件,这些文件最后生成在boost_1_55_0\android\lib目录下。

完成静态库生成完成后,完成下列步骤:

7. 在<boost>目录下,创建Android.mk, 内容如下

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

  1. LOCAL_PATH:= $(call my-dir)  

  2.    

  3. include $(CLEAR_VARS)  

  4. LOCAL_MODULE:= boost_atomic  

  5. LOCAL_SRC_FILES:= android/lib/libboost_atomic.a  

  6. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  7. include $(PREBUILT_STATIC_LIBRARY)  

  8.    

  9. include $(CLEAR_VARS)  

  10. LOCAL_MODULE:= boost_chrono  

  11. LOCAL_SRC_FILES:= android/lib/libboost_chrono.a  

  12. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  13. include $(PREBUILT_STATIC_LIBRARY)  

  14.    

  15. include $(CLEAR_VARS)  

  16. LOCAL_MODULE:= boost_context  

  17. LOCAL_SRC_FILES:= android/lib/libboost_context.a  

  18. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  19. include $(PREBUILT_STATIC_LIBRARY)  

  20.    

  21. include $(CLEAR_VARS)  

  22. LOCAL_MODULE:= boost_date_time  

  23. LOCAL_SRC_FILES:= android/lib/libboost_date_time.a  

  24. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  25. include $(PREBUILT_STATIC_LIBRARY)  

  26.    

  27. include $(CLEAR_VARS)  

  28. LOCAL_MODULE:= boost_exception  

  29. LOCAL_SRC_FILES:= android/lib/libboost_exception.a  

  30. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  31. include $(PREBUILT_STATIC_LIBRARY)  

  32.    

  33. include $(CLEAR_VARS)  

  34. LOCAL_MODULE:= boost_filesystem  

  35. LOCAL_SRC_FILES:= android/lib/libboost_filesystem.a  

  36. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  37. include $(PREBUILT_STATIC_LIBRARY)  

  38.    

  39. include $(CLEAR_VARS)  

  40. LOCAL_MODULE:= boost_graph  

  41. LOCAL_SRC_FILES:= android/lib/libboost_graph.a  

  42. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  43. include $(PREBUILT_STATIC_LIBRARY)  

  44.    

  45. include $(CLEAR_VARS)  

  46. LOCAL_MODULE:= boost_iostreams  

  47. LOCAL_SRC_FILES:= android/lib/libboost_iostreams.a   

  48. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  49. include $(PREBUILT_STATIC_LIBRARY)  

  50.    

  51. include $(CLEAR_VARS)  

  52. LOCAL_MODULE:= boost_math_c99  

  53. LOCAL_SRC_FILES:= android/lib/libboost_math_c99.a  

  54. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  55. include $(PREBUILT_STATIC_LIBRARY)  

  56.    

  57. include $(CLEAR_VARS)  

  58. LOCAL_MODULE:= boost_math_c99f  

  59. LOCAL_SRC_FILES:= android/lib/libboost_math_c99f.a  

  60. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  61. include $(PREBUILT_STATIC_LIBRARY)  

  62.    

  63. include $(CLEAR_VARS)  

  64. LOCAL_MODULE:= boost_math_c99l  

  65. LOCAL_SRC_FILES:= android/lib/libboost_math_c99l.a  

  66. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  67. include $(PREBUILT_STATIC_LIBRARY)  

  68.    

  69. include $(CLEAR_VARS)  

  70. LOCAL_MODULE:= boost_math_tr1  

  71. LOCAL_SRC_FILES:= android/lib/libboost_math_tr1.a   

  72. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  73. include $(PREBUILT_STATIC_LIBRARY)  

  74.    

  75. include $(CLEAR_VARS)  

  76. LOCAL_MODULE:= boost_math_tr1f  

  77. LOCAL_SRC_FILES:= android/lib/libboost_math_tr1f.a  

  78. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  79. include $(PREBUILT_STATIC_LIBRARY)  

  80.    

  81. include $(CLEAR_VARS)  

  82. LOCAL_MODULE:= boost_math_tr1l  

  83. LOCAL_SRC_FILES:= android/lib/libboost_math_tr1l.a  

  84. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  85. include $(PREBUILT_STATIC_LIBRARY)  

  86.    

  87. include $(CLEAR_VARS)  

  88. LOCAL_MODULE:= boost_program_options  

  89. LOCAL_SRC_FILES:= android/lib/libboost_program_options.a  

  90. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  91. include $(PREBUILT_STATIC_LIBRARY)  

  92.    

  93. include $(CLEAR_VARS)  

  94. LOCAL_MODULE:= boost_random  

  95. LOCAL_SRC_FILES:= android/lib/libboost_random.a  

  96. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  97. include $(PREBUILT_STATIC_LIBRARY)  

  98.    

  99. include $(CLEAR_VARS)  

  100. LOCAL_MODULE:= boost_regex  

  101. LOCAL_SRC_FILES:= android/lib/libboost_regex.a  

  102. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  103. include $(PREBUILT_STATIC_LIBRARY)  

  104.    

  105.    

  106. include $(CLEAR_VARS)  

  107. LOCAL_MODULE:= boost_system  

  108. LOCAL_SRC_FILES:= android/lib/libboost_system.a  

  109. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  110. include $(PREBUILT_STATIC_LIBRARY)  

  111.    

  112. include $(CLEAR_VARS)  

  113. LOCAL_MODULE:= boost_thread  

  114. LOCAL_SRC_FILES:= android/lib/libboost_thread.a  

  115. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  116. include $(PREBUILT_STATIC_LIBRARY)  

  117.    

  118. include $(CLEAR_VARS)  

  119. LOCAL_MODULE:= boost_timer  

  120. LOCAL_SRC_FILES:= android/lib/libboost_timer.a  

  121. LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)  

  122. include $(PREBUILT_STATIC_LIBRARY)  

  123.    

可以根据自己的需要调整以上包含


-------------------------------------------------------------------------------------------------------------

应用程序设置:

1. 在应用程序的Android.mk中添加

LOCAL_WHOLE_STATIC_LIBRARIES += boost_filesystem

LOCAL_WHOLE_STATIC_LIBRARIES += boost_system

用多少, 包多少

添加异常支持 LOCAL_CPPFLAGS += –fexceptions

添加模块引用 $(call import-module, boost_1_55_0)


2. 在应用程序的Application.mk中添加


[plain] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #使用stlport_static选项时,与boost一起使用,会在链接时产生如下错误:  

  2. # undefined reference to 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'    

  3. APP_STL := gnustl_static #stlport_static