13

我的问题是每当我尝试使用 Makefile 进行编译时,我都会得到以下信息:

make: Warning: File `Board.c' has modification time 1.3e+03 s in the future
gcc -Wall -c -Wvla -lm Board.c -o Board.o
gcc -Wall -c -Wvla -lm PlayBoard.c -o PlayBoard.o
gcc -lm ErrorHandle.o Board.o PlayBoard.o -g -o PlayBoard
make: warning:  Clock skew detected.  Your build may be incomplete.

我的 Makefile 是:

CC = gcc
FLAGS = -Wall -c -Wvla

PlayBoard: ErrorHandle.o Board.o PlayBoard.o
    $(CC) -lm ErrorHandle.o Board.o PlayBoard.o -g -o $@

PlayBoard.o: PlayBoard.c Board.o
    $(CC) $(FLAGS) -lm PlayBoard.c -o $@

Board.o : ErrorHandle.o Board.c Board.h
    $(CC) $(FLAGS) -lm Board.c -o $@

.PHONY : clean

clean:
    rm -f Board.o PlayBoard.o PlayBoard

all : PlayBoard

谢谢您的帮助。

4

3 回答 3

39

一种可能的解决方案是对touch源树中的每个文件进行更新以更新时间戳:

转到子树的根并执行以下操作:

find . -exec touch {} \; 

然后make clean重试编译。

于 2013-09-25T22:44:16.710 回答
27

正如stijn的评论中所述,消息“的评论中所指出的,如果编译位于 NFS 挂载上的源并且 NFS 服务器的时钟运行在客户端的时钟之前进行编译,则最常给出检测到时钟偏差”。

于 2012-12-06T15:05:23.533 回答
3

在这里的一台大学计算机上做一些工作时,我在 Eclipse 中也看到过几次。我的数据驱动器是网络驱动器,并且网络驱动器和本地计算机之间的时钟差异已关闭。

将我的工作区切换到本地计算机(C 驱动器)上的位置解决了问题

于 2013-07-16T20:06:31.187 回答