make -j 8参数的作用

今天在编译安装一个源码包的时候,不小心看到一个make -j 8的参数,make命令常见用来进行编译的,编译完成后执行make install进行安装,可是-j 8 是用来做什么的?
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
还是用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。

posted @ 2020-06-09 13:10  爱咋闹  阅读(3089)  评论(0编辑  收藏  举报