分类: 嵌入式
2016-07-29 16:43:43
为了使make命令执行并行处理,-j 选项可以用来指定作业数。
$ make -j4
作业数是在编译的时候指定主机的CPU个数,所以在脚本中写成一个常量很糟糕。(特别是把编译脚本给其他人的时候。)并行处理的作业数和编译的效率直接相关,所以需要设置合适的作业数量。
昨天的文章中在编译perf时,make的任务数能自动设置成CPU的数量。调查了一下它是怎么做的。
/tools/perf/
#
# Do a parallel build with multiple jobs, based on the number of CPUs online
# in this system: 'make -j8' on a 8- system, etc.
#
# (To override , run 'make JOBS=1' and similar.)
#
ifeq ($(JOBS),)
JOBS := $(shell -c ^processor /proc/cpuinfo 2>/dev/null) ifeq ($(JOBS),)
JOBS := 1
endif
endif
这种计算了/proc/cpuinfo以processor开头的行的数量。
这里不使用wc命令来计算匹配的行数,而是用grep -c来获取。
这里JOBS是CPU的个数,用这个变量在子进程中使用make命令。
$(MAKE) -f .perf --no-print-directory -j$(JOBS) O=$(FULL_O) $(SET_DEBUG) $@