linux下的clock skew detected

时间:2021-05-25 18:21:14

今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误:

  1. 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权限才可修改)

  1. date    查询系统时间
  2. date -s 1/31/2012   命令可以修改系统日期
  3. 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。