用Android NDK r6编译boost 1.47
转载请注明出处为KlayGE游戏引擎
在PC上的C++开发中,boost已经很普遍。但对于Android这样的移动平台呢?由于KlayGE正在移植Android,作为依赖库之一的boost也必须移植过去。官方的boost并没有提供Android支持,看来得自己做了。
受MysticTreeGames的Boost-for-Android启发,我想用最新的Crystax NDK来编译boost 1.47。
准备工作
需要下载
补丁
首先,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根目录。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂