2012-12-06 36 views
9

Vấn đề của tôi là bất cứ khi nào tôi cố gắng biên dịch sử dụng Makefile tôi nhận được như sau:Makefile: Đồng hồ nghiêng phát hiện

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 của tôi là:

CC = gcc 
FLAGS = -Wall -c -Wvla 

PlayBoard: ErrorHandle.o Board.o PlayBoard.o 
    $(CC) -lm ErrorHandle.o Board.o PlayBoard.o -g -o [email protected] 

PlayBoard.o: PlayBoard.c Board.o 
    $(CC) $(FLAGS) -lm PlayBoard.c -o [email protected] 

Board.o : ErrorHandle.o Board.c Board.h 
    $(CC) $(FLAGS) -lm Board.c -o [email protected] 

.PHONY : clean 

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

all : PlayBoard 

Cảm ơn bạn đã giúp đỡ của bạn.

+3

Kiểm tra thời gian sửa đổi của 'Board.c', dường như bạn có thể đã sao chép này từ một nguồn khác khi ở thời điểm tạo ra là trước machin của bạn. Một giải pháp có thể chạy 'touch Board.c' để đặt thời gian sửa đổi thành thời gian hiện tại –

+1

là các nguồn được lưu trữ trên một vị trí mạng có lẽ? – stijn

+1

bản sao có thể có của [Biên soạn C++ trên máy Linux từ xa - "cảnh báo lệch xung phát hiện"] (http://stackoverflow.com/questions/3824500/compiling-c-on-remote-linux-machine-clock-skew-detected- cảnh báo) – skrrgwasme

Trả lời

26

Là ký hiệu trong một chú thích bởi Stijn thông báo "Clock nghiêng phát hiện" được đưa ra phổ biến nhất khi nguồn biên dịch nằm trên một NFS gắn kết và đồng hồ của máy chủ NFS chạy về phía trước đồng hồ của khách hàng làm biên dịch.

+0

Có giải pháp cho việc này không? Các tệp nguồn của tôi nằm trên máy chủ nfs có vẻ hơi ở phía trước. Máy dev của tôi và máy chủ nfs là VM trên các miền riêng biệt vì vậy tôi có thể không bao giờ nhận được đồng hồ chính xác – TSG

+0

@Telium: Bạn có thể chạy một máy khách N (erwork) T (ime) P (rotocol) trên cả hai máy trên cơ sở thường xuyên? – alk

3

Tôi đã thấy điều này trong Eclipse một vài lần khi thực hiện một số công việc trên một trong các máy tính của trường đại học tại đây. Ổ dữ liệu của tôi là ổ đĩa mạng và sự khác biệt về đồng hồ giữa ổ đĩa mạng và máy cục bộ đã tắt.

Switching workspace của tôi đến một vị trí trên máy tính cục bộ (ổ C) cố định vấn đề

23

Một giải pháp khả thi là để touch mỗi tập tin trong cây nguồn để cập nhật thời gian tem:

Go vào thư mục gốc của cây con, hãy làm:

find . -exec touch {} \; 

Sau đó, make clean và thử lại biên dịch.

+0

Hoạt động mọi lúc. Cảm ơn bạn! – steadweb

+1

Làm như vậy, hãy cho bạn sau đó luôn biên soạn mọi thứ, không chỉ các tệp nguồn đã bị xúc động do thay đổi mã. Ít nhất cho một cơ sở mã lớn này có lẽ không phải là những gì bạn muốn ,. – alk

1

Thông báo đó thường là dấu hiệu cho thấy một số tệp của bạn có thời gian sửa đổi muộn hơn thời gian hệ thống hiện tại. Kể từ khi quyết định tệp nào sẽ biên dịch khi thực hiện xây dựng gia tăng bằng cách kiểm tra xem tệp nguồn đã được sửa đổi gần đây hơn tệp đối tượng của nó chưa, tình trạng này có thể khiến các tệp không cần thiết được xây dựng hoặc tệ hơn, các tệp cần thiết không được xây dựng.

2

loại lệnh sau

find -exec touch \{\} \; 
+2

Nếu không có giải thích thêm, điều này có thể dẫn đến OP có những thứ không mong muốn được thực hiện! Mặc dù chỉ đúng hướng nhưng đây không phải là câu trả lời hay, do thiếu thông tin phụ.Xem câu trả lời của * sblob * để có cách tốt hơn để giải thích vấn đề: http://stackoverflow.com/a/19016418/694576 – alk

Các vấn đề liên quan