Je suis connecté au petit cluster Linux de mon université via PuTTY et WinSCP, transférant des fichiers en utilisant ce dernier et en les compilant et en les exécutant avec le premier. Jusqu'à présent, mon travail a été effectué dans les laboratoires de l'université, mais aujourd'hui, je fais un travail à la maison qui a généré un avertissement intéressant.
J'ai téléchargé un dossier entier de choses et, lors de l'exécution de la make
commande, j'obtiens ceci comme dernière ligne de sortie:
make: avertissement: décalage d'horloge détecté. Votre build peut être incomplet.
Le binaire résultant fonctionne correctement et il ne semble pas y avoir d'autres erreurs inattendues dans le processus de construction.
Il semble que je puisse déclencher l'erreur en construisant après le téléchargement de nouveaux fichiers / fichiers de remplacement (je modifie tout localement puis télécharge la nouvelle version), alors je me demande si c'est quelque chose d'aussi simple que des heures de modification de fichiers incompatibles? Ou quelque chose de plus inquiétant?
Alors, devrais-je m'inquiéter? Comment résoudre / empêcher cela?
Réponses:
Ce message indique généralement que certains de vos fichiers ont des heures de modification postérieures à l'heure système actuelle. Depuis
make
décide quels fichiers compiler lors de l' exécution d' une génération incrémentielle en vérifiant si un fichier source a récemment été modifiée que son fichier objet, cette situation peut causer des fichiers inutiles à construire, ou pire, les fichiers nécessaires pour ne pas être construit.Cependant, si vous construisez à partir de zéro (ne faites pas de construction incrémentielle), vous pouvez probablement ignorer cet avertissement sans conséquence.
la source
touch *
mettra à jour les mtimes à l'heure actuelle. Alternativement, vous pouvez activer NTP sur votre bureau pour synchroniser votre horloge (en supposant que c'est votre bureau qui ne va pas, et non la machine de l'Uni ... si cette dernière, demandez peut-être aux administrateurs système de le réparer?)touch *
c'est pour le moment, et je vais voir si je peux trouver ce qui ne va pas et peut-être avoir un mot avec l'administrateur la prochaine fois que je serai sur place.find . -exec touch {} \;
touch
celle-ci peuvent accepter plusieurs fichiers sur lesquels agir, vous pouvez le faire (beaucoup) plus efficacement avecfind . -exec touch {} +
qui invoqueratouch
avec autant d'arguments que possible.Cela se produit généralement lors de la création dans un répertoire monté NFS et les horloges du client et du serveur NFS ne sont pas synchronisées.
La solution consiste à exécuter un client NTP à la fois sur le serveur NFS et sur tous les clients.
la source
Installez le protocole de temps réseau
Cela m'est également arrivé lors de l'exécution
make
sur un partage Samba SMB CIFS sur un serveur. Une solution durable consiste à installer lentp
démon à la fois sur le serveur et sur le client. (Veuillez noter que ce problème n'est pas résolu en exécutantntpdate
. Cela ne résoudrait le décalage horaire que temporairement, mais pas à l'avenir.)Pour les systèmes dérivés d'Ubuntu et de Debian, tapez simplement la ligne suivante sur la ligne de commande:
De plus, il faudra toujours émettre la commande
touch *
une fois (et une seule fois) dans le répertoire concerné pour corriger une fois pour toutes les heures de modification des fichiers.Pour plus d'informations sur les différences entre
ntp
etntpdate
, veuillez consulter:la source
Solution simple:
fera tout OK.
Pour plus d'informations: http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html
la source
Selon l' utilisateur m9dhatter sur LinuxQuestions.org :
la source
Les autres réponses ici expliquent bien le problème, je ne vais donc pas le répéter ici. Mais il existe une solution qui peut le résoudre qui n'est pas encore répertoriée: exécutez simplement
make clean
, puis réexécutezmake
.Avoir make remove des fichiers déjà compilés empêchera make d'avoir des fichiers pour comparer les horodatages, résolvant l'avertissement.
la source
make clean
vous résoudrez les problèmes (en en créant d'autres).touch
de tous les fichiers. Vous avez raison de dire que cela nécessitera une recompilation complète, mais si cela en vaut la peine ou non, cela dépendra de vos priorités et de la taille de votre projet. Je ne pense pas qu'il soit exact de dire que ce n'est «pas une vraie solution» simplement parce que ce n'est pas la meilleure ou qu'elle présente des inconvénients. Cela résoudra le problème; me semble être une solution.make clean
J'ai eu cela dans le passé - en raison des horloges sur les machines. Pensez à configurer NTP pour que toutes les machines aient la même heure.
la source
Ceci est généralement simplement dû à des temps de non-concordance entre vos machines hôte et client. Vous pouvez essayer de synchroniser les heures sur vos machines en utilisant ntp .
la source
La solution est d'exécuter un client NTP, exécutez simplement la commande comme ci-dessous
172.16.12.100 est le serveur ntp
la source
ntpdate
n'est qu'une correction ponctuelle. Il est préférable d'installerntp
à la fois sur le serveur et sur le client pour obtenir une solution durable.Remplacez la pile de la montre dans votre ordinateur. J'ai vu ce message d'erreur lorsque la pile à l'aspect pièce de monnaie sur la carte mère avait besoin d'être remplacée.
la source
(Juste au cas où quelqu'un atterrirait ici) Si vous avez des droits sudo, une option est de synchroniser l'heure du système
la source
Vérifiez si le résultat de la compilation, par exemple somefile.o, est plus ancien que la source, par exemple somefile.c. L'avertissement ci-dessus signifie que quelque chose concernant les horodatages des fichiers est étrange. Probablement les horloges système du serveur de l'Université diffèrent de votre horloge et vous poussez par exemple à 13 heures un fichier avec la date de modification 14 heures. Vous pouvez voir l'heure sur la console en tapant la date.
la source
Cela m'est arrivé. C'est parce que j'ai couru
make -j 4
et que certains travaux se sont terminés dans le désordre. Cet avertissement doit être attendu lors de l'utilisation de l'-j
option.la source