主要借用这篇博客的方法http://blog.csdn.net/lovesh5/article/details/11694941
我第一次编译的编译平台是MACOSX.
1.boost库1.49(这个是之前别人编过一次的boost库,好几个G,忘了在什么平台上编的了,应该是MACOSX. )
2.ndk版本:android-ndk-r8b
编出来好多错误,生成的库缺几个,比如filesystem,thread。
先检查原因,原因先是我手动改了androidPlatform但是改错了。改好后,还有错,因为文中提到用的是r9的库,我下了个r9b的换了下,错误减少了不少,但是还有。
最后提示error: fatal error: sys/statvfs.h: No such file or directory,这时候需要到的库只剩下filesystem这个库没有了
按一篇文中提到的方法改了boost的一个文件就好了:
Android doesn't have sys/statvfs.h. instead sys/vfs.h should be used.
possible fix (libs/filesystem/src/operations.cpp):
# if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__) # include <sys/statvfs.h> # define BOOST_STATVFS statvfs # define BOOST_STATVFS_F_FRSIZE vfs.f_frsize # else # ifdef __ANDROID__ # include <sys/vfs.h> # endif # ifdef __OpenBSD__ # include <sys/param.h> # endif # include <sys/mount.h> # define BOOST_STATVFS statfs # define BOOST_STATVFS_F_FRSIZE static_cast<boost::uintmax_t>(vfs.f_bsize) # endif
注:
1.期间走了不少弯路,主要是因为按提示的错误查资料,查到的都解决不了问题。严格按照上文的环境,之前提示的错误很多会消失掉。只有filesystem需要改些东西。
2.另外附上我的第三部的命令./b2 toolset=gcc-android4.6 link=static threading=multi runtime-link=static target-os=linux --stagedir=android
3.现在还有个暂时不需要的库:atomic库没有编出来,求指导。。。