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

2024-10-29 08:34:00
admin
原创
53
摘要:问题描述:我使用 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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用