linux下的clock skew detected
今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误:
- make: warning: Clock skew detected. Your build may be incomplete
试了make clean后再make,仍然是同样的问题,并且make clean/make时,一直循环不停止。最后发现这个错误的原因在于系统时间比文件修改时间早,看了下我的系统时间竟然还是2012-01-13,而今天都已经是2012-01-31呢,于是修改时间后重新编译,问题解决。
Linux下用date命令可查询和修改系统时间(root权限才可修改)
- date 查询系统时间
- date -s 1/31/2012 命令可以修改系统日期
- date -s 22:34:50 命令可以修改系统时间
在Linux下编译安装软件包时提示
make: warning: Clock skew detected. Your build may be incomplete.
修改系统的日期与时间然后重新编译安装。则错误消失。方法如下:
[root@server vsftpd-2.0.5]# date
Sat Jan 26 04:33:07 CST 2002
[root@server vsftpd-2.0.5]# date -s 12/11/2006
Mon Dec 11 00:00:00 CST 2006
[root@server vsftpd-2.0.5]# date -s 14:42:50
Mon Dec 11 14:42:50 CST 2006
[root@server vsftpd-2.0.5]# date
Mon Dec 11 14:43:00 CST 2006
[root@server vsftpd-2.0.5]# clock -w
[root@server vsftpd-2.0.5]# date
Mon Dec 11 14:43:33 CST 2006
然后重新make 并 make install则安装正常。
注意,这里说的是系统时间,是linux由操作系统维护的。
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致 性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。
#clock -w
这个命令强制把系统时间写入CMOS。