zoukankan      html  css  js  c++  java
  • ndk 编译 boost 库,支持serialization

          Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。

          在Android的externa库中也可以看到boost库,不过那个只有一部分,并不是完整的Boost。点击浏览

    1. 在github上有位大牛写了个NDK编译Boost的脚本,非常傻瓜化:点击浏览

      在项目主页上可以看到该脚本的版本支持情况。

      PS: 没有r9版的信息,但是我测试r9d编译成功,r10编译失败。

      

    2. 检出项目,或者直接下载压缩包

    $ git clone https://github.com/MysticTreeGames/Boost-for-Android.git

      

      项目非常小,进入项目后发现只有5个文件,并没有Boost库,这是因为Boost库是根据编译时按选择的版本下载的。

      $ cd Boost-for-Android
    
      $ ls

      

      查看帮助可以看到一些编译选项,解释很详细,这里不罗嗦。

    $ ./build-android.sh --help

      

    3. 开始编译,当前环境:virtualbox + xubuntu14.04-x86_64

      3.1 android大部分为32位,64位android才刚出不久,所以在64位linux环境下使用ndk需要安装一些库:

    $ sudo apt-get install ia32-libs
    

      

      3.2 这里推荐大家使用 virtualbox + xubuntu + xshell 的环境

      进入vbox安装目录

    D:>cd Program_FilesVirtualBox

      在后台启动xubuntu

    D:Program_FilesVirtualBox>vboxmanage startvm xubuntu-14.04 -type headless

      关闭正在运行的xnbuntu,当然,关机应该使用 $sudo shutdown -h now

    D:Program_FilesVirtualBox>vboxmanage stopvm xubuntu-14.04

      3.3 确保环境都配好,然后开始运行编译脚本,这里选择1.49.0版本,编译到 install 目录:

    $ ./build-android.sh --boost=1.49.0 --prefix=install

      

      速度略慢,耐心等待,已经下载好的包,再次编译时不会重复下载,这脚本真心很傻瓜,亏我还写这么多!!!!

      下载完后再经过漫长的等待,就编译完了。。。。。

      

    4. 使用Crystax第三方NDK编译Boost

      4.1 对于使用Boost中的序列化功能的请注意了,官方ndk不支持boost-serialization库,原因是ndk不支持wchar_t,所以就需要用到第三方NDK crystax 了。

      crystax下载地址,点击浏览

      根据Boost-for-Android的版本支持情况,这里选择crystax-r7来编译boost-1.49.0,但是你会发现有好多crystax-r7,该用哪一个呢?????

      打开build-android.sh脚本,搜索“crystax”,会发现只有“7-crystax-5.beta3”,那么我们就使用android-ndk-r7-crystax-5.beta3-linux-x86.tar.bz2

    $ vi ./build-android.sh

      

      下载完crystax后,修改path,重新编译。

    5. 在项目中使用crystax编译的Boost需要注意的事项:

      1. 修改Application.mk中的APP_STL参数:

    APP_STL:=gnustl_static
    

      

    博客不在线,有问题直接联系QQ: 783713515

  • 相关阅读:
    Firemonkey 控件设定字型属性及颜色
    ListView 使用 LiveBindings 显示超过 200 条记录
    Firemonkey ListView 获取项目右方「>」(Accessory) 事件
    XE7 Update 1 选 iOS 8.1 SDK 发布 iPhone 3GS 实机测试
    Firemonkey Bitmap 设定像素颜色 Pixel
    Firemonkey 移动平台 Form 显示使用 ShowModal 范例
    XE7 提交 App(iOS 8)提示「does not contain the correct beta entitlement」问题修复
    XE7 Android 中使用 MessageDlg 范例
    导出 XE6 预设 Android Style (*.style) 档案
    修正 Memo 設定為 ReadOnly 後, 無法有複製的功能
  • 原文地址:https://www.cnblogs.com/swordy/p/3991243.html
Copyright © 2011-2022 走看看