Je suis connecté au petit cluster Linux de mon université via PuTTY et WinSCP, transférant des fichiers à l'aide de ce dernier et les compilant et les exécutant avec l'ancien. Mon travail jusqu’à présent a été effectué dans les laboratoires de l’université, mais aujourd’hui, j’ai effectué chez moi un travail qui a généré un avertissement intéressant.
J'ai téléchargé tout un dossier de documents et, après l'exécution de la commande make
, la dernière ligne de sortie est la suivante:
make: warning: décalage d'horloge détecté. Votre build peut être incomplet.
Le binaire résultant fonctionne correctement et il ne semble y avoir aucune autre erreur inattendue 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 je télécharge la nouvelle version). Je me demande donc si c'est aussi simple que des temps de modification de fichier incompatibles? Ou quelque chose de plus concernant?
Alors, devrais-je m'inquiéter? Comment puis-je résoudre/empêcher cela?
Ce message indique généralement que la date de modification de certains de vos fichiers est postérieure à l'heure système actuelle. Étant donné que make
décide des fichiers à compiler lors de la création incrémentielle en vérifiant si un fichier source a été modifié plus récemment que son fichier objet, cette situation peut entraîner la création de fichiers inutiles ou, pire, les fichiers nécessaires à non être construit.
Cependant, si vous créez à partir de rien (sans effectuer de construction incrémentielle), vous pouvez probablement ignorer cet avertissement sans conséquence.
Cela se produit généralement lors de la création d'un répertoire monté NFS et lorsque les horloges du client et du serveur NFS ne sont pas synchronisées.
La solution consiste à exécuter un client NTP sur le serveur NFS et tous les clients.
Cela m'est également arrivé lorsque j'ai exécuté make
sur un partage CIFS Samba SMB sur un serveur . Une solution durable consiste à installer le démon ntp
sur le serveur et le client .. Ce problème n'est pas résolu en exécutant ntpdate
. Cela ne résoudrait la différence de temps que temporairement, mais pas à l'avenir.)
Pour les systèmes dérivés d’Ubuntu et Debian, tapez simplement la ligne suivante sur la ligne de commande:
$ Sudo apt-get install ntp
De plus, il faudra toujours émettre la commande touch *
une fois (et une seule fois) dans le répertoire concerné pour corriger les temps de modification du fichier une fois pour toutes.
$ touch *
Pour plus d'informations sur les différences entre ntp
et ntpdate
, reportez-vous à:
Solution simple:
# touch filename
va tout faire bien.
Pour plus d'informations: http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html
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 pour résoudre ce problème qui ne figure pas encore dans la liste: exécutez simplement make clean
, puis réexécutez make
.
Si vous supprimez tous les fichiers déjà compilés, cela empêchera make d’avoir des fichiers avec lesquels comparer les horodatages, ce qui résoudrait l’avertissement.
Selon l'utilisateur m9dhatter sur LinuxQuestions.org :
"make" utilise l'horodatage du fichier pour déterminer s'il s'agit du fichier il essaie de compiler est ancien ou nouveau. si votre horloge est vide, il peut avoir des problèmes de compilation.
si vous essayez de modifier les fichiers sur une autre machine avec une heure devant vous de quelques minutes et que vous les transférez sur votre machine, puis essayez de la compiler, un avertissement indiquant que le fichier a été modifié par la suite peut être émis. l'horloge peut être asymétrique ou quelque chose à cet effet (je ne peux pas vraiment me souvenir). vous pouvez simplement aller dans le fichier incriminé et faire ceci:
#touch <nom du fichier du fichier incriminé>
J'ai eu cela par le passé, à cause des horloges sur les machines. Pensez à configurer NTP pour que toutes les machines aient la même heure.
Cela est généralement dû à des temps différents entre votre hôte et les ordinateurs clients. Vous pouvez essayer de synchroniser les heures sur vos machines en utilisant ntp .
La solution consiste à exécuter un client NTP, il suffit d'exécuter la commande comme indiqué ci-dessous.
#ntpdate 172.16.12.100
172.16.12.100 est le serveur NTP
Remplacez la pile de la montre sur votre ordinateur. J'ai vu ce message d'erreur lorsque la pile à la recherche de pièces de monnaie sur la carte mère avait besoin d'être remplacée.