Android编译系统的学习(二)

学习计划



了解各个历史的工具

配制文件:

文件名作用
MakefileGNU Make开发的makefile
mkandroid编译系统特有的makefile
bpandroid编译系统特有的makefile
build.ninjaninja特有的makefile

  • Makefile详解
    传送门
  • build.ninja详解
    Ninja的默认配制文件,其它文件也以.ninja为后缀。
  • Makefile与mk的区别:
    Makefile就是传统的gnu配制文件 ; mk/bp就是android特有的配制文件
  • bp与mk的区别:
    bp是纯粹的配置,没有分支/算数逻辑运算/循环等流程控制,
    控制逻辑需要Go编写实现。

构建系统:

  • 为什么google在android 7.0的时候把GNU make替换成ninja?
    因为ninja专注核心功能、轻巧、速度快、并行编译、并行link可能还有其他。

  • ninja与GUN make的对比:

构建系统android后缀编译时间clean是否需要编写android是否带
ninjabuild.ninja/.ninja第一次与增删文件时慢,后续快
makeMakefile/.mk/.bp反之

历史工具:
Makefile是GUN make的配制文件,build.ninja是ninja的配制文件
但是我们并不有看到Makefile mk bp这些文件直接替换成build.ninja
所以google还是做了一些特殊处理不同阶段产生了一些工具

配制文件之间的转换

名称作用
katiMakefile or mk转换成build.ninja
androidmkmk转成bp
Soong编译生成安装Blueprint
Blueprint生成并解析bp文件



分享一组网上的对比数据:

  • 多任务并行编译测试
构建系统Termux (8core/-j12)构建系统Termux (8core/-j12)
xmake24.890sxmake12.264s
ninja25.682sninja11.327s
cmake(gen+make)5.416s+28.473scmake(gen+make)1.203s+14.030s
cmake(gen+ninja)4.458s+24.842scmake(gen+ninja)0.988s+11.644s
  • 单任务编译测试
构建系统Termux (-j1)构建系统MacOS (-j1)
xmake1m57.707sxmake39.937s
ninja1m52.845sninja38.995s
cmake(gen+make)5.416s+2m10.539scmake(gen+make)1.203s+41.737s
cmake(gen+ninja)4.458s+1m54.868scmake(gen+ninja)0.988s+38.022s

未完待续,敬请期待...

非常感谢您花费时间阅读这份稿件,感觉有用可以分享给更多的学习者,转载请标记出处。
作者: [Alin]
时间: 2021 年 02月 03日
email:380475066@qq.com

参考文献

GNU-维基百科
GCC-维基百科
xmake

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值