mac 上 android boost 庫的編譯及使用
阿新 • • 發佈:2018-12-18
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 )