web-dev-qa-db-ja.com

Makefile:クロックスキューが検出されました

私の問題は、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.

私のメイクファイルは:

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

ご協力ありがとうございました。

12
Nadin Haddad

可能な解決策は、タイムスタンプを更新するために、ソースツリー内のすべてのファイルをtouchすることです。

サブツリーのルートに移動します。

find . -exec touch {} \; 

次にmake cleanとコンパイルを再試行します。

28
sblob

stijnによるコメントで示されているように、NFSマウント上にあるソースをコンパイルし、NFSサーバーのクロックがクライアントのクロックよりも進んでいる場合、メッセージ "Clock skew detected"が最も一般的に表示されます。コンパイルを行います。

26
alk

ここの大学のコンピューターの1つで作業をしているときにも、Eclipseでこれを2、3回見ました。私のデータドライブはネットワークドライブであり、ネットワークドライブとローカルマシンの間のクロックの差はオフでした。

ワークスペースをローカルマシン(Cドライブ)上の場所に切り替えると問題が解決しました

3
MattEdge

次のコマンドを入力します

find -exec touch \{\} \;
2
Muneeb Zulfiqar

このメッセージは通常、一部のファイルの変更時刻が現在のシステム時刻より遅いことを示しています。 makeは、インクリメンタルビルドを実行するときにコンパイルするファイルを決定します。これは、ソースファイルがオブジェクトファイルよりも最近変更されたかどうかをチェックすることにより、この状況により不要なファイルがビルドされたり、さらに悪いことに、必要なファイルがビルドされないことがあります。

1
Muneeb Zulfiqar