做嵌入式的,大部分时候改完代码,在 IDE 里点一下 build 或者 make 按钮,调试代码就是正常的。但偶尔遇到过 make 之后,代码调试时出现很诡异的行为,重新 rebuild all 之后就正常了。今天又遇到了,想问下什么情况下需要重编译,才能保证程序正常?
1
Kaakira 2020-01-15 18:25:42 +08:00
一般你点一下"make/build"的时候都是增量编译,一般应该都是没问题的吧,猜测可能是依赖没有处理好吧
|
2
Lin0936 2020-01-15 18:34:09 +08:00 via iPhone 2
三板斧:rebuild,restart IDE,restart computer.
|
3
Kirscheis 2020-01-15 18:34:59 +08:00 1
vs 等 ide 中的 build 包括了自动的 compile 和 link 等,如果你修改了某个文件,ide 会记录并且知道它需要重新 compile。但如果你在 ide 之外修改了某个文件,ide 可能不会识别到 binary 发生了变化,而依然用老的 binary 去链接,就会产生不可预测的结果。
推荐看看 csapp,就明白了。 |
6
caowentao OP 我是在 ide 中编译的,在外部用编辑器编辑的,如果出现 ide 没有捕获到更改,链接就有可能出错。
|
7
atempcode 2020-01-16 15:19:57 +08:00
这个建议去看看 make 的原理,基本就是比较源和结果的时间戳,如果源新就执行对应的编译动作。后面的 IDE,MSBuild 等万变不离其宗。
如果 build 和 rebuild 结果不一样,基本是 dependency 有问题:源定义不对,结果定义不对,源 /结果对应关系不对。 |