首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
caowentao
V2EX  ›  程序员

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

  •  
  •   caowentao · 6 天前 via iPhone · 816 次点击


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

    7 回复  |  直到 2020-01-16 15:19:57 +08:00
    Kaakira
        1
    Kaakira   6 天前
    一般你点一下"make/build"的时候都是增量编译,一般应该都是没问题的吧,猜测可能是依赖没有处理好吧
    Lin0936
        2
    Lin0936   6 天前 via iPhone   ♥ 2
    三板斧:rebuild,restart IDE,restart computer.
    Kirscheis
        3
    Kirscheis   6 天前   ♥ 1
    vs 等 ide 中的 build 包括了自动的 compile 和 link 等,如果你修改了某个文件,ide 会记录并且知道它需要重新 compile。但如果你在 ide 之外修改了某个文件,ide 可能不会识别到 binary 发生了变化,而依然用老的 binary 去链接,就会产生不可预测的结果。

    推荐看看 csapp,就明白了。
    keelii
        4
    keelii   6 天前
    @Lin0936 实在不行 reinstall OS
    caowentao
        5
    caowentao   6 天前 via iPhone
    @Kirscheis 分析得有道理
    caowentao
        6
    caowentao   6 天前 via iPhone   ♥ 1
    我是在 ide 中编译的,在外部用编辑器编辑的,如果出现 ide 没有捕获到更改,链接就有可能出错。
    atempcode
        7
    atempcode   5 天前
    这个建议去看看 make 的原理,基本就是比较源和结果的时间戳,如果源新就执行对应的编译动作。后面的 IDE,MSBuild 等万变不离其宗。
    如果 build 和 rebuild 结果不一样,基本是 dependency 有问题:源定义不对,结果定义不对,源 /结果对应关系不对。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2204 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 14:55 · PVG 22:55 · LAX 06:55 · JFK 09:55
    ♥ Do have faith in what you're doing.