您的位置:首页 > 移动开发 > Android开发

windows下编译boost for android

2014-11-22 10:00 302 查看
env:
      windows xp 32 bit

      mingw

      official NDK
1. 下载源代码

地址是 :http://sourceforge.net/projects/boost/files/boost/1.54.0/

本文下载的是 boost_1_54_0.7z

2. 解压源代码到任意目录

本问解压后匹配文件: ***/boost154/tools/build/v2/user-config.jam

3. 生成bjam.exe

打开cmd.exe

切换目录至 ***/boost154/

  输入命令: bootstrap.bat 回车

这样在***/boost154下生成 bjam.exe 和 b2.exe

4. 修改bjam配置文件user-config.jam

配置文件路径 ***/boost154/tools/build/v2/user-config.jam

解压后此文件是全部注释的说明文件

  仿照其他博文 在最后加上如下注释内的内容  

注意:

ANDROID_NDK 为NDK跟目录,匹配文件如: ../../android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.6/include

这段配置比较微妙,最好复制后进行修改,开始自己写的时候不知道哪里错了,一直提示 大写 Error android4.6 一类的错误,无法开始编译

5. MinGW中输入bjam编译命令

打开mingw命令端口,切换至 ***/boost154/

  输入如下注释中的命令,并回车

    

注意:

--stagedir

指定编译后库的存放目录,命令输入时的当前路径,

本文是 ***/boost154/android ,结果保存在 ***/boost154/android/lib 中

--without-python

不编译python库,

使用 --without-***屏蔽库

库列表可以是

atomic

chrono

context

coroutine

date_time

exception

filesystem

graph

graph_parallel

iostreams

locale

log

math

mpi

program_options

python

random

regex

serialization

signals

system

test

thread

timer

wave

命令回车后首先会输出当前配置  

编译结束后输出

与官方下载库比较, ***/boost154/android/lib/中的库,没有生成有

  context

   filesystem

locale

log

python(输入命令时设置不编译,可能需要第三方库

thread

zlib

下面的博文写NDK不支持wide chars,但是wserialization 、serialization都生成了.
6.参考

本文方法主要参考

http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

这篇播放写NDK不支持wide chars,并且 CrystaX官网也写NDK不支持wide chars,

boost-for-android 补丁工程

https://github.com/MysticTreeGames/Boost-for-Android/archive/master.zip

提供补丁修改boost代码,貌似能解决上面编译不过的库

提供批处理和bjam配置文件...不会用......

CrystaX官方

http://www.crystax.net/en/android/ndk?format=php

boost邮件关于android/ios的问答

http://lists.boost.org/Archives/boost/2012/12/199676.php

几个编译笔记

http://www.cppblog.com/sunicdavy/archive/2013/07/20/201993.html

http://blog.sina.com.cn/s/blog_a6946c8a01016aot.html

----------------------2013-09-18---11:43:13
  重新编译,均使用MinGW
1.Mingw编译bjam.exe
  Mingw终端切换至   
  boost_1_53_0\tools\build\v2\engine 目录 执行

  $ build.sh

  等到提示:

    [COMPILE] bin.ntx86\b2.exe

    [COPY] bin.ntx86\bjam.exe

    ...updated 2 targets...

  将 boost_1_53_0\tools\build\v2\engine\bin.ntx86 目录下的bjam.exe拷贝到 boost_1_53_0 目录下
2.修改bjam配置文件

  boost_1_53_0\tools\build\v2\user-config.jam
  

    需要跟上 ranlib 这个标签,否则会显示 archiver

  '"..\..\code_other\android\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin"' 不是内部或外部命令,

  也不是可运行的程序或批处理文件。不理解,gcc 能找到,ar找不到.
3.打补丁
    将https://github.com/MysticTreeGames/Boost-for-Android 提供的1.53的补丁拷贝至 boost_1_53_0\MinGW终端切换至
boost_1_53_0 的父目录,执行

      会输出:

4.编译
    MinGW切换至目录 boost_1_53_0,执行

    
    libboost_thread-gcc-mt-s-1_53.a库无法生成.还是提示: libs\thread\src\win32\thread.cpp:31:21: fatal error: process.h: No such file or directory
    libboost_context-gcc-mt-s-1_53.a没有生成,'armasm' 不是内部或外部命令,也不是可运行的程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: