web-dev-qa-db-fra.com

Compilation de C++ sur une machine Linux distante - avertissement "horloge détectée"

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?

148
DMA57361

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.

184
Tyler McHenry

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.

51
janneb

Installer le protocole de temps réseau

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 à:

18
Serge Stroobandt

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

10
Brijesh Valera

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.

6
skrrgwasme

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é>

6
z -

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.

3
Ed Heal

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 .

2
Soo Wei Tan

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 

1
Surjit

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.

0
BlushONine