mac 上 android boost 库的编译及使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liwenlong_only/article/details/80242765

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地址

猜你喜欢

转载自blog.csdn.net/liwenlong_only/article/details/80242765