最近编译一个项目,是openwrt架构。编译用了一个下午。出现了几个小问题,改改makefile或config,无关紧要就过去了。但实际全部完整编译一遍也是用2.5小时时间。
书归正传,如何加快编译,提高效率呢。
两个主要方向:
1、完整编译一遍,看哪些是老死不会变的代码,编译一遍,将结果压缩保存。使用脚本进行编译,make前将结果解压。 Makefile中将这部分编译的过程去掉。
2、多线程编译,如kernel和package中的ipk,使用make -j 8 编译效率大大提升。(我的可以是8线程编译,和电脑CPU性能有关系)
基于两个方向,对openwrt的编译过程进行整改。
a) 完整编译过后,将dl目录整体压缩保存。 这样,在编译脚本中,解压即可防止再下载的过程。
b) 编译耗时很久的两项: tools、toolchain。编译生成物在build_dir中为 your_proj/build_dir/host和 your_proj/build_dir/toolchain_xxx。 将其打包带走。然后修改your_proj/Makefile,让这两个大块头不再编译。
将Makefile中 world: 的依赖prepare 去掉;
将$(target/stamp-compile)依赖的$(tools/stamp-install)去掉;
将$(OPENWRT_BUILD)的else分支(即再次编译分支)的include tools/Makefile 和include toolchain/Makefile 注释掉。
将 your_proj/pack