在远程 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 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 "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
解决方案 13:
Make 检查编译结果(例如 somefile.o)是否比源代码(例如 somefile.c)更旧。上面的警告意味着文件的时间戳有些奇怪。可能大学服务器的系统时钟与您的时钟不同,例如您在下午 1 点推送了修改日期为下午 2 点的文件。您可以通过输入 date 在控制台上查看时间。
解决方案 14:
我遇到了这种情况。这是因为我运行后make -j 4
,一些作业以乱序完成。使用该选项时应该会出现此警告-j
。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件