一、前提知识
主机时间与虚拟机时间不同步所致。我们在某一操作系统所属磁盘空间下创建一个文件,那么这个文件的创建时间是以磁盘所属的操作系统的时钟为基准的。
我们假设主机windows的系统时间是10:00,但是虚拟机linux系统的时间是9:00。c:/work是主机通过VMware Tools共享给虚拟机的文件夹,挂载在虚拟机的位置是/mnt/hgfs/work。
我们在虚拟机上在/mnt/hgfs/work目录下创建一个文件,那么这个文件的创建时间是10:00,因为work文件夹属于windows操作系统的。
倘若我们在虚拟机的/workspace目录下创建一个新文件,那么这个文件的创建时间是9:00,因为/workspace文件夹属于linux操作系统。
二、原因分析
有了上边的基础,再来审查这个问题就很清楚了。我在/mnt/hgfs/work目录下编译程序,编译过程中会产生新的文件.depend,而且这个新的文件还要被Makefile重新读回去。
由于主机windows时间比虚拟机时间快了么2S左右,所以产生的.depend文件就比虚拟机linux系统的时间早了么2s。接下来,Makefile重新读取这个文件的时候就会发现它的创建时间比linux操作系统的时间还早了么2s。
三、解决办法
方法一:更改虚拟机时间,使主机时间与虚拟机时间同步。
#date –s 10:00
方法二:将编译目录/mnt/hgfs/work改作 /workspace目录下即可。