+ -
当前位置:首页 → 问答吧 → 求高手指点!!!makefile规则每条命令行执行是否会并发执行!!!

求高手指点!!!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中执行,有没有可能第二条命令先于第一条命令先执行呢,从而造成一些问题呢?

作者: 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将串行的执行规则的命令(同一时刻只能有一条命令被执行)

作者: zhangsuozhu   发布时间: 2010-08-05

玩LINUX有几年了,到目前还没有遇到过并发的makefile

作者: mars51   发布时间: 2010-08-05

有FLAGS可以 += -j6的不?

作者: prolj   发布时间: 2010-08-05

相关阅读 更多

热门下载

更多