更新MSYS2后出现Clock skew detected警告的解决方法
这个问题不是个例,不少用户在通过pacman -Syu升级MSYS2后,MinGW32环境下的mingw32-make频繁弹出怪异的"Clock skew detected"警告,典型报错如下:
mingw32-make[4]: Warning: File 'CMakeFiles\Makefile2' has modification time 4.3e+09 s in the future
mingw32-make[5]: Warning: File 'CMakeFiles\common.dir\build.make' has modification time 2.8e+16 s in the future
mingw32-make[5]: warning: Clock skew detected. Your build may be incomplete.
该问题由GNU Make从4.3版本升级到4.4版本引发,本地环境和GitHub Actions的全新安装环境都会出现。
解决方法:
回滚到GNU Make 4.3版本
这是最直接有效的方案,执行以下命令:# 卸载当前的4.4版本 pacman -R mingw-w64-i686-make # 安装4.3版本(可先通过pacman -Ss mingw-w64-i686-make确认可用的旧版本号) pacman -U mingw-w64-i686-make-4.3-5-any.pkg.tar.zst如果仓库中已移除旧版本,可到
/var/cache/pacman/pkg/目录下查找缓存的4.3版本包文件,用同样的pacman -U命令安装。临时规避:强制刷新文件时间戳
在执行mingw32-make前,手动更新所有CMake生成的Makefile相关文件时间戳,消除时间差误判:touch CMakeFiles/*.make CMakeFiles/Makefile2 Makefile也可以在CMake的构建脚本中添加这个步骤,自动触发时间戳更新。
等待官方修复
该问题是GNU Make 4.4在MinGW32平台的兼容性问题,MSYS2维护团队已经收到相关反馈,后续会通过更新mingw-w64-i686-make包修复,可定期执行pacman -Syu检查更新。
问题根源:
GNU Make 4.4在处理MinGW32环境下的文件时间戳时存在逻辑错误,将正常的文件时间解析为远超当前时间的数值,导致make认为系统时钟存在偏差,触发大量警告。
内容的提问来源于stack exchange,提问作者GuillaumeG

