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

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

  •  
  •   caowentao · 2020-01-15 16:18:08 +08:00 via iPhone · 2165 次点击
    这是一个创建于 1780 天前的主题,其中的信息可能已经有所发展或是发生改变。


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

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

    推荐看看 csapp,就明白了。
    keelii
        4
    keelii  
       2020-01-15 18:43:26 +08:00
    @Lin0936 实在不行 reinstall OS
    caowentao
        5
    caowentao  
    OP
       2020-01-15 21:07:45 +08:00 via iPhone
    @Kirscheis 分析得有道理
    caowentao
        6
    caowentao  
    OP
       2020-01-15 21:08:55 +08:00 via iPhone   ❤️ 1
    我是在 ide 中编译的,在外部用编辑器编辑的,如果出现 ide 没有捕获到更改,链接就有可能出错。
    atempcode
        7
    atempcode  
       2020-01-16 15:19:57 +08:00
    这个建议去看看 make 的原理,基本就是比较源和结果的时间戳,如果源新就执行对应的编译动作。后面的 IDE,MSBuild 等万变不离其宗。
    如果 build 和 rebuild 结果不一样,基本是 dependency 有问题:源定义不对,结果定义不对,源 /结果对应关系不对。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:59 · PVG 04:59 · LAX 12:59 · JFK 15:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.