运行两个并发make是否安全?

时间:2014-06-18 13:02:12

标签: makefile gnu-make

假设我在同一目录中打开两个shell并同时在两个shell中运行make。当然没有充分的理由这样做,但它安全吗?它会导致损坏的构建文件吗?

对于一个更现实的例子,我可能在不同的目录中运行两个单独的make,而不知道它们都在同一目录中执行递归make。

1 个答案:

答案 0 :(得分:1)

我怀疑这里的答案是,它太复杂而无法肯定地说,并且部分取决于所讨论的makefile。一般make操作方法应该使这大部分都是安全的(因为如果某些东西比它的源更新它将不会被重建),而是make文件缓存和操作顺序(特别是与-j的可能使用相结合)让我觉得这可能有用,但也可能做坏事。

如果你的makefile是以“可证明的”正确的方式构建的(这可能意味着不使用递归make),那么它可能正常工作。

正如MadScientist在他的评论中正确指出的那样,真正的潜在问题是当命令运行时碰撞或重叠。在这种情况下,使自己成为正是由于其内部测试因各种原因而相互竞争的原因。