2016年8月11日星期四

做了个工具android-gcc-toolchain方便使用NDK

有一种冲动想要实现这样的工具:一个命令android-gcc-toolchain gcc a.c生成一个android的exe,一个命令把交叉编译所需的CC等环境变量准备好,以便让人执行configure和make命令。最终把这这些都做到一个工具里去了,顺便还加上了一些黑方法对付常见的交叉编译错误。

自从第一次用NDK时写了拒绝ndk-build,过了两年了,也没有看到自己想要的工具,忍不了了,就想着有时间时写一个,就是写bash而已,不过我对bash不熟,磕磕碰碰花了不少时间,汗。(2016/09/08: 做了个Docker image,在Windows上可以通过Docker-Toolbox来用了,详细看最后.  2016/09/22:支持Windows,但是得用MINGW,例如Git Bash)
想要的功能就是摘要里的那些,贴几个图估计就明白了,就不重复翻译了。















实测

测试了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 ...

没有评论:

发表评论