it-swarm.com.de

Kompilieren von C++ auf einem entfernten Linux-Computer - Warnung "Zeitversatz erkannt"

Ich bin über PuTTY und WinSCP mit dem kleinen Linux-Cluster meiner Universität verbunden. Dabei werden Dateien mit letzterem übertragen, mit dem ersteren kompiliert und ausgeführt. Bisher wurde meine Arbeit in den Laboren der Universität durchgeführt, aber heute habe ich einige Arbeiten zu Hause gemacht, die eine interessante Warnung auslösten.

Ich habe einen ganzen Ordner hochgeladen und wenn ich den Befehl make ausgeführt habe, erhalte ich dies als letzte Zeile der Ausgabe:

make: warning: Zeitversatz erkannt. Ihr Build ist möglicherweise unvollständig.

Die resultierende Binärdatei funktioniert ordnungsgemäß und es scheint keine unerwarteten Fehler im Erstellungsprozess zu geben.

Ich scheine in der Lage zu sein, den Fehler durch das Erstellen einiger neuer/ersetzter Dateien auszulösen (ich bearbeite alles lokal und lade die neue Version hoch). Oder etwas mehr Besorgnis erregendes?

Soll ich mir Sorgen machen? Wie kann ich das beheben/verhindern?

148
DMA57361

Diese Meldung weist in der Regel darauf hin, dass einige Ihrer Dateien nach der aktuellen Systemzeit geändert wurden. Da make beim Durchführen eines inkrementellen Builds entscheidet, welche Dateien kompiliert werden sollen, indem geprüft wird, ob eine Quelldatei vor kurzem geändert wurde als ihre Objektdatei, kann dies dazu führen, dass unnötige Dateien erstellt werden oder, schlimmer noch, notwendige Dateien für nicht sein gebaut.

Wenn Sie jedoch von Grund auf neu erstellen (keine inkrementelle Erstellung), können Sie diese Warnung wahrscheinlich ohne Konsequenz ignorieren.

184
Tyler McHenry

Normalerweise tritt dies auf, wenn in einem NFS-Verzeichnis ein Verzeichnis erstellt wird und die Uhren auf dem Client und dem NFS-Server nicht synchron sind.

Die Lösung besteht darin, einen NTP - Client sowohl auf dem NFS-Server als auch auf allen Clients auszuführen.

51
janneb

Installieren Sie das Network Time Protocol

Dies ist mir auch passiert, wenn Sie make auf einer Samba SMB - CIFS-Freigabe auf einem Server ausführen. Eine dauerhafte Lösung besteht darin, den Daemon ntp sowohl auf dem Server als auch auf dem Client zu installieren. (Beachten Sie dies Dieses Problem wird nicht durch Ausführen von ntpdate gelöst. Dies würde die Zeitdifferenz nur vorübergehend beheben, jedoch nicht in der Zukunft.)

Für von Ubuntu und Debian abgeleitete Systeme geben Sie einfach die folgende Zeile in die Befehlszeile ein:

$ Sudo apt-get install ntp

Außerdem muss der Befehl touch * einmal (und nur einmal) im betroffenen Verzeichnis ausgeführt werden, um die Änderungszeiten für Dateien ein für alle Mal zu korrigieren.

$ touch *

Weitere Informationen zu den Unterschieden zwischen ntp und ntpdate finden Sie unter:

18

Einfache Lösung:

# touch filename

werde alles gut machen.

Für weitere Informationen: http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html

10
Brijesh Valera

Die anderen Antworten hier sind gut, um das Problem zu erklären. Ich werde das hier nicht wiederholen. Es gibt jedoch eine Lösung, die das Problem lösen kann, die noch nicht aufgeführt ist: Führen Sie einfach make clean aus und führen Sie dann make erneut aus.

Durch das Entfernen von bereits kompilierten Dateien durch make werden keine Dateien zum Vergleichen der Zeitstempel von make verwendet, wodurch die Warnung behoben wird.

6
skrrgwasme

Laut Benutzer m9dhatter auf LinuxQuestions.org :

"make" verwendet den Zeitstempel der Datei, um festzustellen, ob die Datei es versucht zu kompilieren ist alt oder neu. Wenn Ihre Uhr fehlerhaft ist, können beim Kompilieren Probleme auftreten.

wenn Sie versuchen, Dateien auf einem anderen Computer mit einer Uhrzeit im Voraus um einige Minuten zu ändern und auf Ihren Computer zu übertragen und dann zu kompilieren, wird möglicherweise eine Warnung ausgegeben, die besagt, dass die Datei in der Zukunft geändert wurde. Uhr kann schief sein oder etwas zu diesem Effekt (kann mich nicht wirklich erinnern). Sie könnten nur die betreffende Datei aufrufen und folgendes tun:

#touch <Dateiname der fehlerhaften Datei>

6
z -

Ich hatte das in der Vergangenheit - weil die Uhren auf den Maschinen stehen. Erwägen Sie die Einrichtung von NTP, damit alle Maschinen dieselbe Uhrzeit haben.

3
Ed Heal

Dies liegt in der Regel nur daran, dass die Host-Computer und die Client-Maschinen nicht übereinstimmen. Sie können versuchen, die Zeiten auf Ihren Maschinen mit ntp zu synchronisieren.

2
Soo Wei Tan

Die Lösung besteht darin, einen NTP - Client auszuführen. Führen Sie den Befehl einfach wie folgt aus 

#ntpdate 172.16.12.100

172.16.12.100 ist der ntp-Server 

1
Surjit

Ersetzen Sie den Akku der Uhr in Ihrem Computer. Ich habe diese Fehlermeldung gesehen, als die auf dem Motherboard aussehende Batterie ersetzt werden musste.

0
BlushONine