本文描述在Debian 8.0系统,Android NDK编译android版本的boost库,最后给出使用Android.mk及已编译好的库。
预备
andorod NDK版本:最高去到r10d目前最新的,建议android-ndk-r9d 支持的boost版本:1.45.0、1.48.0、1.49.0、1.53.0、1.54.0、1.55.0。
Boost-for-Android: https://github.com/MysticTreeGames/Boost-for-Android/archive/master.zip
编译boost库
如果不想编译就直接跳过,后面给出已经编译好的boost库
- 终端下执行sudo apt-get install ia32-libs,x64位缺少,请按提示安装。
- 配置环境变量:$(NDK_ROOT) ,依次执行:
- export NDK_ROOT=/usr/local/src/android-ndk-r9d
- export PATH=$NDK_ROOT:$PATH
- 修改build-android.sh的内容
-
--layout=versioned #增加下面两行 --without-python --without-locale #增加结束 -sICONV_PATH=`pwd`/../libiconv-libicu-android/armeabi
-
- 终端执行: ./build-android.sh $(NDK_ROOT)
boost库的使用
1.你的程序Application.mk
APP_STL := gnustl_static APP_CPPFLAGS += -frtti -fexceptions
boost库的编译是用指定了gnustl的标准库。
2.你的程序Android.mk
#导入boost库所有在的目录 $(call import-add-path,$(LOCAL_PATH)/../../../../build) .. .. LOCAL_WHOLE_STATIC_LIBRARIES += boost_static include $(BUILD_STATIC_LIBRARY) $(call import-module,boost)
3.boost 库的Android.mk文件内容
LOCAL_PATH:= $(call my-dir) # boost_date_time # include $(CLEAR_VARS) LOCAL_MODULE := boost_date_time LOCAL_SRC_FILES := lib/libboost_date_time-gcc-mt-1_55.a include $(PREBUILT_STATIC_LIBRARY) # boost_filesystem # include $(CLEAR_VARS) LOCAL_MODULE := boost_filesystem LOCAL_SRC_FILES := lib/libboost_filesystem-gcc-mt-1_55.a include $(PREBUILT_STATIC_LIBRARY) # boost_thread # include $(CLEAR_VARS) LOCAL_MODULE := boost_thread LOCAL_SRC_FILES := lib/libboost_thread-gcc-mt-1_55.a include $(PREBUILT_STATIC_LIBRARY) # boost_system # include $(CLEAR_VARS) LOCAL_MODULE := boost_system LOCAL_SRC_FILES := lib/libboost_system-gcc-mt-1_55.a include $(PREBUILT_STATIC_LIBRARY) # boost_program_options # include $(CLEAR_VARS) LOCAL_MODULE := boost_program_options LOCAL_SRC_FILES := lib/libboost_program_options-gcc-mt-1_55.a include $(PREBUILT_STATIC_LIBRARY) # boost_chrono # #include $(CLEAR_VARS) #LOCAL_MODULE := boost_chrono #LOCAL_SRC_FILES := lib/libboost_chrono-gcc-mt-1_55.a #include $(PREBUILT_STATIC_LIBRARY) # first lib, which will be built statically # include $(CLEAR_VARS) LOCAL_MODULE := boost_static LOCAL_MODULE_FILENAME := boost LOCAL_STATIC_LIBRARIES := boost_date_time boost_system boost_filesystem boost_program_options boost_thread # boost_chrono #LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/boost-1_55 LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/boost-1_55 #LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes include $(BUILD_STATIC_LIBRARY)
编译好的boost 1.55的下载
build ndk-r9d-boost1.55.0:http://pan.baidu.com/s/1pJKH6gr