Folia
← 返回头版

递归make调用中的并行编译问题分析

在Makefile中使用make -j进行并行编译时,递归调用子make会遭遇并行度丧失的问题1。当执行make -j4递归调用时,系统会显示"jobserver unavailable: using -j1"的警告,导致子进程无法充分利用并行编译能力1。

针对这一问题存在两种常见解决方案1。一种是在make命令前添加+前缀,如+make -C subdir,另一种则是使用$(MAKE)变量来调用子make,即$(MAKE) -C subdir1。

通过对GNU Make 3.81、4.0、4.2.1及4.3等多个版本的测试对比,该问题的表现存在版本差异1。其中GNU Make 4.2.1和4.3版本改进了警告信息,在提示中明确显示被强制的-jN数值1。


来源

  1. Hacker NewsRecursive `make` and `-j`

评论