自从第一次用NDK时写了拒绝ndk-build,过了两年了,也没有看到自己想要的工具,忍不了了,就想着有时间时写一个,就是写bash而已,不过我对bash不熟,磕磕碰碰花了不少时间,汗。(2016/09/08: 做了个Docker image,在Windows上可以通过Docker-Toolbox来用了,详细看最后。2016/09/22:支持Windows,但是得用MINGW,例如Git Bash)
就是这个 https://github.com/sjitech/android-gcc-toolchain 了。
想要的功能就是摘要里的那些,贴几个图估计就明白了,就不重复翻译了。
###实测
测试了ffmpeg和nodejs,前者是autoconf的变形,后者是chromium的gyp build,
ffmpeg什么也不需要准备了,什么standard toolchain生成,什么PATH,CC这类的设定都不用搞了,把configure,make命令放在android-gcc-toolchain
里执行就行了。例如:
android-gcc-toolchain <<< "./configure --enable-cross-compile --target-os=linux --arch=arm $OTHER_OPTIONS && make"
哦,这里假设
OTHER_OPTIONS="--disable-everything --disable-doc --enable-protocol=pipe --enable-filter=scale --enable-filter=crop --enable-filter=transpose --enable-demuxer=rawvideo --enable-decoder=rawvideo --enable-muxer=image2 --enable-muxer=image2pipe --enable-muxer=mjpeg --enable-encoder=mjpeg --enable-encoder=png"
而NodeJS的编译,具体的看[NodeJS for Android]完美编译大全
2016/09/06: 支持ccache这个编译缓存工具了,重复编译时速度快了很多。选项--ccache,两个c。
2016/09/08: 做了个Docker image,在Windows上可以通过Docker-Toolbox来用了。
$ docker run -it osexp2000/android-gcc-toolchain arm64
[android-21-arm64] ./configure ...