代码之家  ›  专栏  ›  技术社区  ›  DMA57361

在远程Linux上编译C++——“时钟歪斜检测”警告

  •  151
  • DMA57361  · 技术社区  · 15 年前

    我通过PuTTY和WinSCP连接到大学的小型Linux集群,使用后者传输文件,并用前者编译和运行它们。到目前为止,我的工作是在大学的实验室里完成的,但今天我在家里做了一些工作,这产生了一个有趣的警告。

    make

    make:警告:检测到时钟偏移。您的生成可能不完整。

    生成的二进制文件工作正常,并且在构建过程中似乎没有任何其他意外错误。

    我似乎能够在上传一些新的/替换文件后通过构建触发错误(我在本地编辑所有内容,然后上传新版本),所以我想知道这是否和不匹配的文件修改时间一样简单?或者更重要的事?

    12 回复  |  直到 9 年前
        1
  •  218
  •   Tyler McHenry    15 年前

    该消息通常表示某些文件的修改时间晚于当前系统时间。自 make 通过检查源文件的修改时间是否比目标文件的修改时间更近,来决定执行增量生成时要编译哪些文件。这种情况可能会导致生成不必要的文件,或者更糟的是,生成必要的文件 建造。

    但是,如果您是从头开始构建(而不是进行增量构建),您可能会忽略此警告,而不会产生任何后果。

        2
  •  59
  •   janneb    14 年前

    通常,在NFS装载目录中构建时会发生这种情况,并且客户端和NFS服务器上的时钟不同步。

        3
  •  27
  •   Community Mohan Dere    6 年前

    安装网络时间协议

    我跑步时也遇到过这种情况 make 在服务器上的Samba SMB CIFS共享上。 ntp 服务器和客户端上的守护程序。 (请注意,此问题不是通过运行 ntpdate . 这只会暂时解决时差,但不会在将来解决。)

    $ sudo apt install ntp
    

    此外,还需要发出命令 touch *

    $ touch *
    

    有关 ntp公司 ,请参考:

        4
  •  13
  •   Flexo - Save the data dump sunny moon    13 年前

    简单解决方案:

    # touch filename
    

    一切都会好的。

    http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html

        5
  •  6
  •   Rob Kennedy    15 年前

    根据 user m9dhatter on LinuxQuestions.org :

    它试图编译的是旧的还是新的。如果你的时钟坏了,它可能在编译时有问题。

    如果您试图在另一台机器上修改文件,并且时钟时间提前几分钟,然后将其传输到您的机器上,然后尝试编译,则可能会发出警告,说明该文件是从将来修改的。时钟可能是歪斜的或是类似的东西(真的记不起来了)。你可以直接转到有问题的文件并执行以下操作:

    #触摸有问题文件的<文件名>

        6
  •  6
  •   skrrgwasme    11 年前

    这里的其他答案很好地解释了这个问题,所以我在这里不再重复。但是有一个解决方案还没有列出:只需运行 make clean ,然后重新运行 make .

    让make删除任何已编译的文件将阻止make使用任何文件来比较的时间戳,从而解决警告问题。

        7
  •  4
  •   Ed Heal    14 年前

    我以前也有过这样的经历——因为机器上的钟都停了。考虑设置NTP,以便所有机器都有相同的时间。

        8
  •  2
  •   rahularyansharma    15 年前

    这通常是由于主机和客户机之间的时间不匹配造成的。您可以尝试使用 ntp .

        9
  •  2
  •   Khan    5 年前

    find . -type f | xargs -n 5 touch
    
    make clean
    
    clean
    
        10
  •  1
  •   Andrew Barber Eric Lafortune    13 年前

    解决方案是运行一个NTP客户机,只需运行如下命令

    #ntpdate 172.16.12.100
    

        11
  •  1
  •   BlushONine    12 年前

        12
  •  1
  •   ObviousChild    6 年前

    (以防有人在这里着陆)

    sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
    
        13
  •  -1
  •   fschmitt    15 年前

    检查编译的结果(例如somefile.o)是否比源代码(例如somefile.c)旧。上面的警告意味着文件的timestaps有些奇怪。可能大学服务器的系统时钟与您的时钟不同,您可以在下午1点推送修改日期为下午2点的文件。您可以通过键入date在控制台上查看时间。

        14
  •  -3
  •   kilojoules    10 年前

    这发生在我身上。因为我跑了 make -j 4 有些工作完成得很混乱。当使用 -j