什么情况下需要 rebuild all 全部重编译?

2020-01-15 16:18:08 +08:00
 caowentao


做嵌入式的,大部分时候改完代码,在 IDE 里点一下 build 或者 make 按钮,调试代码就是正常的。但偶尔遇到过 make 之后,代码调试时出现很诡异的行为,重新 rebuild all 之后就正常了。今天又遇到了,想问下什么情况下需要重编译,才能保证程序正常?

2160 次点击
所在节点    程序员
7 条回复
Kaakira
2020-01-15 18:25:42 +08:00
一般你点一下"make/build"的时候都是增量编译,一般应该都是没问题的吧,猜测可能是依赖没有处理好吧
Lin0936
2020-01-15 18:34:09 +08:00
三板斧:rebuild,restart IDE,restart computer.
Kirscheis
2020-01-15 18:34:59 +08:00
vs 等 ide 中的 build 包括了自动的 compile 和 link 等,如果你修改了某个文件,ide 会记录并且知道它需要重新 compile。但如果你在 ide 之外修改了某个文件,ide 可能不会识别到 binary 发生了变化,而依然用老的 binary 去链接,就会产生不可预测的结果。

推荐看看 csapp,就明白了。
keelii
2020-01-15 18:43:26 +08:00
@Lin0936 实在不行 reinstall OS
caowentao
2020-01-15 21:07:45 +08:00
@Kirscheis 分析得有道理
caowentao
2020-01-15 21:08:55 +08:00
我是在 ide 中编译的,在外部用编辑器编辑的,如果出现 ide 没有捕获到更改,链接就有可能出错。
atempcode
2020-01-16 15:19:57 +08:00
这个建议去看看 make 的原理,基本就是比较源和结果的时间戳,如果源新就执行对应的编译动作。后面的 IDE,MSBuild 等万变不离其宗。
如果 build 和 rebuild 结果不一样,基本是 dependency 有问题:源定义不对,结果定义不对,源 /结果对应关系不对。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/638177

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX