Makefile 我中途停止了make命令,以前的构建会受到影响吗?

Makefile 我中途停止了make命令,以前的构建会受到影响吗?,makefile,build,Makefile,Build,我使用make命令构建了一个非常大的项目,其中有许多子项目。我花了3个小时。然后,由于错误(没有清理之前的构建),我重新执行make命令几分钟,然后停止了它。 我破坏了我以前的构建吗?make在幕后是如何工作的?是否以原子和安全的方式构建对象文件 注意:我无法运行任何二进制文件来查看它们是否已损坏,因为这是另一个漫长的过程。我只是想知道我是否很好,或者我必须重新运行make并让它完成。如果您想将此二进制文件发布为您的商业产品的生产版本,那么我不会依赖它,始终100%确保您使用的是完全保存和提交的

我使用make命令构建了一个非常大的项目,其中有许多子项目。我花了3个小时。然后,由于错误(没有清理之前的构建),我重新执行make命令几分钟,然后停止了它。 我破坏了我以前的构建吗?make在幕后是如何工作的?是否以原子和安全的方式构建对象文件


注意:我无法运行任何二进制文件来查看它们是否已损坏,因为这是另一个漫长的过程。我只是想知道我是否很好,或者我必须重新运行make并让它完成。

如果您想将此二进制文件发布为您的商业产品的生产版本,那么我不会依赖它,始终100%确保您使用的是完全保存和提交的代码库的成功构建版本

另一方面,我想你需要这个用于调试,然后你可以使用它!为什么?因为make系统仅在编译完所有对象文件并检测到需要重新链接二进制文件的更改时覆盖输出二进制文件一次:

在重新编译任何需要它的对象文件后,make决定是否重新链接编辑。如果文件编辑不存在,或者如果任何对象文件比它更新,则必须执行此操作。如果刚刚重新编译了对象文件,则该文件现在比“编辑”更新,因此“编辑”将重新链接


因此,如果您没有更改代码库,链接器将不会重新链接二进制文件,使其保持由成功生成创建的状态。

因此,只要未触发重新链接,可执行文件将保持不变?@a.Mashreghi,除非您有显式影响旧二进制文件的自定义规则,只要链接操作没有启动,它就应该保持不变