Chinaunix首页 | 论坛 | 博客
  • 博客访问: 172834
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 09:10
文章分类
文章存档

2016年(43)

我的朋友

分类: 嵌入式

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) $@
阅读(5953) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~