转载请注明出处为KlayGE游戏引擎

在PC上的C++开发中,boost已经很普遍。但对于Android这样的移动平台呢?由于KlayGE正在移植Android,作为依赖库之一的boost也必须移植过去。官方的boost并没有提供Android支持,看来得自己做了。

受MysticTreeGames的Boost-for-Android启发,我想用最新的Crystax NDK来编译boost 1.47。

准备工作

需要下载

  • boost 1.47
  • Crystax’s NDK r6
  • MysticTreeGames的Boost-for-Android

补丁

首先,MysticTreeGames的补丁是基于boost 1.45和官方的NDK r5,在最新版上不一定能完美运作。因为有些源文件在1.45到1.47的过程中更改了,无法自动打上补丁。所以我手工地在原始的boost 1.47上根据补丁进行修改。其实不太难,因为只有12个文件需要修改。

编译脚本

MysticTreeGames提供的build-android.sh也没法直接用,很可能是因为它并没有在Cygwin上测试过。于是我写了一 个build_android.sh和一个build_android.bat作为编译脚本。幸运的是,最终的脚本很简单,而且在Windows、 Cygwin和Linux下都能用。(还有个额外的好处,用build_android.bat的话就不再需要Cygwin了!)

到这里,boost 1.47已经可以用NDK r6正常编译了。但有个缺点是只能生成静态库(”link=static runtime-link=static”)。

还能用VC编译吗?

接着我试用VC10来编译boost,结果出问题了。由于user-config.jam被打了补丁,现在它只能支持NDK的编译器。解决方法是把 修改过的user-config.jam拷到boost的根目录,重命名为别的名字,比如user-config-android.jam。然后就可以用 “bjam –user-config=./user-config-android.jam …”来告诉bjam用哪个.jam来作为user config。

合在一起

在附件里面你可以找到所有我修改过的文件。在编译之前,你必须设置一个环境变量,名字为“ANDROID_NDK”,只想你的NDK根目录。

boost_for_android_patch.7z

更多相关文章

  1. Android启动脚本init.rc
  2. Android自动打包、签名、优化、上传ANT脚本
  3. Android 进阶——Android Studio 项目结构详细述及Gradle脚本语
  4. Android自动化测试之MonkeyRunner录制和回放脚本(十一)
  5. 分析脚本文件AndroidInitProcess分析心得(1)
  6. Android热补丁动态修复技术(完结篇):自动生成打包带签名的补丁,重
  7. android的ant脚本自动生成模板
  8. Android——init.rc脚本
  9. Linux通过shell脚本实现JDK版本之间的快速切换

随机推荐

  1. PianoView-添加一行代码使用[最美应用]的
  2. 实战Linux Bluetooth编程(三) HCI层编程
  3. Android(安卓)调节屏幕亮度问题
  4. Android传感器各种解释
  5. Android(安卓)进程间通信-Intent、Messen
  6. Android(安卓)动画AlphaAnimation类方法
  7. React Native兼容iOS Android的TabBar
  8. Android(安卓)rom开发:webview崩溃问题Bin
  9. Android(安卓)GridView的使用
  10. android Data Backup(上)