是否有任何快速指导方针可以安全地要求make在多个工作岗位上工作?
我问,因为在过去,它似乎通常对我来说很好,但最近它一直在引起麻烦。
我做了一个“make -j8”(使用八个工作来加速建筑)并继续得到:
“。无法识别正在生成的其中一个共享库上的文件格式”。这甚至在清理完共享库之后(make clean成功删除它,但是一旦我也做了不必要的步骤,手动删除它)并重新开始。
在看到问题之后,我现在很想使用多个工作。有没有办法提前告知多个工作是否可以与make一起使用?
答案 0 :(得分:0)
这完全取决于您的Makefile中依赖关系的布局。你必须非常小心,并且要指定每个依赖关系而不仅仅依赖于行顺序和巧合。
我遇到make -j2
的输出工作正常但make -j4
没有的情况,因为有一个项目在它应该之前编译,但我在指定时并不够谨慎那。同样地,我有make -j4
似乎工作,只是发现某些部分正在使用陈旧代码进行编译,这意味着最终产品将与我预期的不同。在我发现依赖性问题之前,我必须确保make clean
在构建之前make -j4
允许我再次安全地使用make clean
。
让我回答你的每一个问题:
不在我的书中。如果您的依赖项完全正确,那么您就可以了。否则,要小心。
我认为答案与前一项相同。我通常认为它会工作,直到我知道它没有,然后我试图找到问题。然而,这可能不是一种安全的工作方式。如果您注意到意外结果,请使用make
然后.so file format not recognized
而不使用多个作业,并查看是否可以解决问题。如果是这样,您可以合理地假设您的Makefile的依赖关系不正确。
您还有一个关于{{1}}问题的隐含问题。这听起来像是同一个问题。具体来说,也许.so正在构建错误的依赖关系,或错误的.so在找到或构建正确的一个之前被拉入,或者.so在被调用时是一个不完整的状态。