为4个平台编译Boost
公司的项目至今仍在使用Boost 1.56.0版本,最近发现Boost.uuid在Windows上居然会一直尝试去访问/dev/urandom
,进而转移到系统盘根目录urandom
文件,然后客户认为这会有安全隐患,需要修正。我随手看了一下Boost.uuid在1.56.0和1.64.0上的源代码,貌似确实1.56.0版并没有分系统实现,在1.64.0上为Windows系统使用平台特有的实现。于是我就建议升级Boost,然后发现这个third party的owner居然是我们组,同事开玩笑地问我能不能去为几个平台编译一下Boost,我当场就拒绝了,但回到家我还是决定折腾一下。
- Windows平台使用msvc 2015的话特别简单:
- macOS和iOS平台使用了同一组脚本,从网上找的,我再自己稍做修改,macOS上只要x86_64架构的即可。
- iOS上需要armv7,arm64,i386,x86_64四种架构的。
-
Android平台的搞了很久,昨天晚上折腾到12点多,今天又折腾了一个白天,终于搞定。网上有许多各种方案,在Linux,Windows,macOS上都有,我在Windows 10上折腾了很多次都不行,最后在macOS上成功了。首先,仍然是先构建bjam:
1
./bootstrap.sh
然后修改Boost根目录下的
project-config.jam
文件,用以下内容覆盖文件内容:1 2 3 4 5 6 7 8 9 10
import option ; using gcc : x86 : i686-linux-android-g++ ; using gcc : x86_64 : x86_64-linux-android-g++ ; using gcc : mipsel : mipsel-linux-android-g++ ; using gcc : mips64el : mips64el-linux-android-g++ ; using gcc : aarch64 : aarch64-linux-android-g++ ; using gcc : arm : arm-linux-androideabi-g++ ; option.set keep-going : false ;
接着把Android NDK路径设置到环境变量中:
1
export androidNDKRoot=$HOME/android-ndk-r14b
最后运行bjam进行编译:
这样可以编译出armeabi等共6种目前官方NDK支持的架构的静态库。