在远程 Linux 机器上编译 C++ - “检测到时钟偏差”警告

2024-10-29 08:34:00
admin
原创
198
摘要:问题描述:我使用 PuTTY 在家里连接到大学 Linux 服务器。我使用 WinSCP 将整个源代码从 Windows 家用电脑上传到 Linux。然后make通过 PuTTY 运行会产生以下有趣的警告。make: warning: Clock skew detected. Your build may...

问题描述:

我使用 PuTTY 在家里连接到大学 Linux 服务器。我使用 WinSCP 将整个源代码从 Windows 家用电脑上传到 Linux。然后make通过 PuTTY 运行会产生以下有趣的警告。

make: warning:  Clock skew detected.  Your build may be incomplete.

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

我似乎能够在上传一些新文件/替换文件后通过构建来触发错误(我在本地编辑所有内容,然后上传新版本),所以我想知道这是否只是文件修改时间不匹配这么简单?还是更令人担忧的事情?

那么我应该担心吗?我该如何解决/预防这个问题?


解决方案 1:

该消息通常表示某些文件的修改时间晚于当前系统时间。由于make在执行增量构建时,编译器通过检查源文件的修改时间是否晚于其目标文件的修改时间来确定要编译哪些文件,因此这种情况可能会导致构建不必要的文件,或者更糟的是,无法构建必要的文件。

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

解决方案 2:

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

解决方案是在 NFS 服务器和所有客户端上运行 NTP 客户端。

解决方案 3:

安装网络时间协议

make当我在服务器上运行 Samba SMB CIFS 共享时,我也遇到了这种情况。一个持久的解决方案是在ntp服务器和客户端上安装守护进程。(请注意,运行 并不能解决这个问题ntpdate。这只能暂时解决时间差异问题,但不能在将来解决。)

对于 Ubuntu 和 Debian 衍生系统,只需在命令行中输入以下行:

$ sudo apt install ntp

此外,仍然需要touch *在受影响的目录中发出一次命令(且仅一次)以一劳永逸地纠正文件修改时间。

$ touch *

ntp有关和之间区别的更多信息ntpdate,请参阅:

  • 使用 NTP 进行时间同步

  • 如何在 Ubuntu 16.04 上设置时间同步

解决方案 4:

简单的解决方案:

# touch filename

一切都会好起来。

更多信息请见:
http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html

解决方案 5:

在终端中输入即可解决问题:

find . -type f | xargs -n 5 touch

make clean

clean

解决方案 6:

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

删除任何已编译的文件将导致 make 没有文件可以比较时间戳,从而解决警告。

解决方案 7:

根据LinuxQuestions.org 上的用户 m9dhatter 的说法:

“make” 使用文件的时间戳来确定它尝试编译的文件是旧的还是新的。如果您的时钟有问题,则可能会在编译时出现问题。

如果您尝试在另一台机器上修改文件,并且该机器的时钟时间比您的机器早几分钟,然后将其传输到您的机器上,然后尝试编译,它可能会弹出一个警告,说该文件是从将来修改的。时钟可能有偏差或类似的东西(真的记不清了)。您可以直接进入有问题的文件并执行以下操作:

touch <有问题的文件的文件名>

解决方案 8:

我以前也遇到过这种情况 - 因为机器上的时钟不准。考虑设置 NTP,以便所有机器都具有相同的时间。

解决方案 9:

这通常只是由于主机和客户端计算机之间的时间不匹配。您可以尝试使用ntp同步计算机上的时间。

解决方案 10:

解决方案是运行 NTP 客户端,只需运行以下命令

#ntpdate 172.16.12.100

172.16.12.100 是 ntp 服务器

解决方案 11:

更换计算机中的手表电池。当主板上的硬币电池需要更换时,我看到了此错误消息。

解决方案 12:

(以防万一有人来到这里)如果你有 sudo 权限,一个选项是同步系统时间

sudo date -s &quot;$(wget -qSO- --max-redirect=0 google.com 2>&amp;1 | grep Date: | cut -d&#039; &#039; -f5-8)Z&quot;

解决方案 13:

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

解决方案 14:

我遇到了这种情况。这是因为我运行后make -j 4,一些作业以乱序完成。使用该选项时应该会出现此警告-j

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用