1. 程式人生 > >mac 上 android boost 庫的編譯及使用

mac 上 android boost 庫的編譯及使用

mac 上 android boost 庫的編譯及使用

環境

系統:mac osx v10.13.4 (17E199)
ndk:android-ndk-r16b
boost版本:v1.66.0

一,編譯

使用編譯腳進行編譯,地址如下:https://github.com/moritz-wundke/Boost-for-Android.git

$ git clone https://github.com/moritz-wundke/Boost-for-Android.git
$ cd Boost-for-Android
$ ./build-android.sh ndk_dir --
with-libraries=date_time,system,random --arch=arm64-v8a,armeabi-v7a

ndk_dir 是你自己的ndk目錄
–with-libraries 指定你需要的boost的庫,根據自己的需要新增;
–arch 指定你需要的指令集,根據自己的需要新增;
執行上面的shell命令結果如下:
這裡寫圖片描述
下載boost庫報錯,需要根據地址手動下載boost庫,然後放到Boost-for-Android目錄下,在執行上面的shell命令;
之後,編譯完成;

二,使用

android studio 支援cmake交叉編譯,在CMakeLists.txt中新增如下程式碼:

//如果使用了libboost_system.a庫,需要新增如下預處理巨集定義,不然會報錯,錯誤如下:
//Error:(221) undefined reference to `boost::system::generic_category()'
add_definitions("-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_NO_LIB -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB")

add_library( # Sets the name of the library.
test # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). ) #add boost_date_time lib set(libboost_date_time ${PROJECT_SOURCE_DIR}/../3rdparty/boost/prefix/${abi}/libboost_date_time.a) add_library(libboost_date_time-lib STATIC IMPORTED) set_target_properties(libboost_date_time-lib PROPERTIES IMPORTED_LOCATION ${libboost_date_time}) # add libboost_random lib set(libboost_random ${PROJECT_SOURCE_DIR}/../3rdparty/boost/prefix/${abi}/libboost_random.a) add_library(libboost_random-lib STATIC IMPORTED) set_target_properties(libboost_random-lib PROPERTIES IMPORTED_LOCATION ${libboost_random}) # add libboost_system lib set(libboost_system ${PROJECT_SOURCE_DIR}/../3rdparty/boost/prefix/${abi}/libboost_system.a) add_library(libboost_system-lib STATIC IMPORTED) set_target_properties(libboost_system-lib PROPERTIES IMPORTED_LOCATION ${libboost_system}) target_link_libraries( # Specifies the target library. test libboost_date_time-lib libboost_random-lib libboost_system-lib )

demo地址