求高手指点!!!makefile规则每条命令行执行是否会并发执行!!!
时间:2010-08-05
来源:互联网
我之前一直认为:
all:
command1
command2
makefile在执行完command1的时候才会执行command2。
当我看到makefile教材中讲到规则中的每一个命令行都是一个子shell,那照这么讲,是否会由于这个并发引发一些问题。
如uclibc 0.9.29的makefile中有这条规则:
install_dev: install_headers
$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
-$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
我的疑问是由于两条命令是在不同的子shell中执行,有没有可能第二条命令先于第一条命令先执行呢,从而造成一些问题呢?
all:
command1
command2
makefile在执行完command1的时候才会执行command2。
当我看到makefile教材中讲到规则中的每一个命令行都是一个子shell,那照这么讲,是否会由于这个并发引发一些问题。
如uclibc 0.9.29的makefile中有这条规则:
install_dev: install_headers
$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
-$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
我的疑问是由于两条命令是在不同的子shell中执行,有没有可能第二条命令先于第一条命令先执行呢,从而造成一些问题呢?
作者: linkejin 发布时间: 2010-08-05
不会并发
作者: zhangsuozhu 发布时间: 2010-08-05
我怎么貌似记得make是有并发的………………

作者: daybreakcx 发布时间: 2010-08-05
GNU make支持同时执行多条命令。通常情况下,同一时刻只有一个命令在执行,下一个命令只有在当前命令执行完成之后才能够开始执行。不过可以通过make的命令行选项“-j”或者“--job”来告诉make在同一时刻可以允许多条命令同时被执行(注意,在MS-DOS中此选项无效,因为它是单任务操作系统)。
如果选项“-j”之后存在一个整数,其含义是告诉make在同一时刻可允许同时执行命令的数目。这个数字被称为“job slots”。当“-j”选项之后没有出现一个数字时,那么同一时刻执行的命令数目没有要求。使用默认的“job slots”,值为1。表示make将串行的执行规则的命令(同一时刻只能有一条命令被执行)
如果选项“-j”之后存在一个整数,其含义是告诉make在同一时刻可允许同时执行命令的数目。这个数字被称为“job slots”。当“-j”选项之后没有出现一个数字时,那么同一时刻执行的命令数目没有要求。使用默认的“job slots”,值为1。表示make将串行的执行规则的命令(同一时刻只能有一条命令被执行)
作者: zhangsuozhu 发布时间: 2010-08-05
玩LINUX有几年了,到目前还没有遇到过并发的makefile
作者: mars51 发布时间: 2010-08-05
有FLAGS可以 += -j6的不?
作者: prolj 发布时间: 2010-08-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28