gpt4 book ai didi

makefile - 为什么可能有必要强制重建程序?

转载 作者:行者123 更新时间:2023-12-04 14:55:09 31 4
gpt4 key购买 nike

我正在关注 Warren Gay 所著的“Beginning STM32”一书(顺便说一句,迄今为止非常出色),其中介绍了如何开始使用 Blue Pill。

让我感到困惑的是,当我们将第一个程序放在我们的 Blue Pill 上时,书中建议在将程序闪存到设备之前强制重建该程序。我使用:

破坏

制作

制作flash

我的问题是:为什么这是必要的?既然程序已经制作完成,为什么不直接刷入程序呢?我的猜测是它只是为了学习如何制作一个未制作的程序......但我也想知道在闪存到设备之前重建是否是最佳实践?书上没说为什么?

最佳答案

你必须问作者,但我建议它不再是“以防万一”。不相信 make 文件可能指定了所有可能的依赖项。如果 makefile 是在没有自动生成依赖项的情况下手动构建的,那是完全有可能的。此外,简单地建议重建比解释可能有必要或其他情况的所有情况更容易,后者不会详尽无遗。

从作者的角度来看,它消除了一些超出作者控制的可能的构建一致性错误,因此它确保您不会最终认为这本书是错误的,而这可能是您所做的作者无法控制。

即使使用自动生成的依赖项,项目也可能具有 makefile 或依赖项生成器无法捕获的依赖项,例如用于使用自定义工具生成代码的资源文件。

对于长期开发的大型项目,一些很少修改的模块很可能已经使用旧版本的工具链进行编译,干净的构建确保所有内容都已编译并与当前工具链接。

make 根据文件时间戳构建依赖;如果您构建了由命令行宏控制的变体,make 将无法确定哪些依赖项依赖于此类宏,因此在构建不同的变体时(从“调试”切换到“发布”例如构建),最好重新构建所有模块以确保每个模块一致且兼容。

我建议在构建/调试周期中使用增量构建来提高预期的开发速度,并为发布或更改某些构建配置(例如启用/禁用浮点硬件或切换到不同的处理器变体。

如果在调试过程中您得到似乎没有意义的结果,例如断点和代码步进与源代码不一致,或者崩溃或行为似乎与您可能所做的一些小更改无关(也许该代码有甚至没有被执行),有时这可能是由于构建不一致(出于各种原因,通常是复杂的构建),在这种情况下,至少消除是明智的> 通过执行全部重建来建立一致性。

当然,如果您要向第三方发布代码,例如客户或为了生产某些产品,您可能希望执行干净的构建以确保构建的一致性。您不希望用户报告您无法重现的错误,因为给他们的构建是不可重现的。

关于makefile - 为什么可能有必要强制重建程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68204517/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com