Makefile:检测到时钟偏差

Nad*_*dad 11 makefile clock skew

我的问题是每当我尝试使用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.
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

小智 30

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

转到子树的根目录:

find . -exec touch {} \; 
Run Code Online (Sandbox Code Playgroud)

然后make clean重试编译.

  • 这样做可以让您始终并且永远编译所有内容,而不仅仅是由于代码更改而触及的源文件。至少对于大型代码库,这可能不是您想要的。 (2认同)

alk*_*alk 26

正如stijn的评论中所表示的那样,如果编译位于NFS挂载上的源并且NFS服务器的时钟在客户端的时钟之前运行进行编译,则最常给出消息" 检测到时钟偏斜 ".