web-dev-qa-db-ja.com

リモートLinuxマシンでC ++をコンパイルする-「クロックスキューが検出されました」という警告

私は大学の小さなLinuxクラスターにPuTTYとWinSCPを介して接続し、後者を使用してファイルを転送し、前者でそれらをコンパイルして実行します。私のこれまでの仕事は大学の研究室で行われてきましたが、今日は自宅で面白い警告を発する仕事をしています。

フォルダー全体をアップロードし、makeコマンドを実行すると、これが出力の最終行になります。

make:警告:クロックスキューが検出されました。ビルドが不完全な可能性があります。

結果のバイナリは正常に機能し、ビルドプロセスで他の予期しないエラーは発生していないようです。

私はいくつかの新しい/置換ファイルをアップロードした後にビルドすることでエラーを引き起こすことができるようです(私はすべてをローカルで編集してから新しいバージョンをアップロードします)ので、ミスマッチなファイル変更時間と同じくらい簡単なものかどうか疑問に思っていますか?または何かもっと心配ですか?

だから、私は心配する必要がありますか?これを修正/防止するにはどうすればよいですか?

152
DMA57361

通常、このメッセージは、一部のファイルの変更時間が現在のシステム時刻より遅いことを示しています。 makeは、ソースファイルがオブジェクトファイルよりも最近変更されたかどうかをチェックすることにより、インクリメンタルビルドを実行するときにコンパイルするファイルを決定するため、この状況により、不要なファイルがビルドされるか、さらに悪いことに、構築されない.

ただし、ゼロからビルドする場合(インクリメンタルビルドを実行しない場合)、この警告を無視して無視することができます。

189
Tyler McHenry

通常、これは、NFSマウントされたディレクトリに構築するときに発生し、クライアントとNFSサーバーのクロックが同期していません。

解決策は、NFSサーバーとすべてのクライアントの両方でNTPクライアントを実行することです。

53
janneb

Network Time Protocolをインストールする

これは、サーバー上のSamba SMB CIFS共有でmakeを実行しているときにも起こりました。永続的なソリューションは、サーバーとクライアントの両方にntpデーモンをインストールすることです。 (この変数はntpdateを実行しても解決されないことに注意してください。これは一時的に時差を解決しますが、将来的には解決しません。)

UbuntuおよびDebianから派生したシステムの場合、コマンドラインで次の行を入力するだけです。

$ Sudo apt-get install ntp

さらに、影響を受けるディレクトリでコマンドtouch *を1回(および1回のみ)発行して、ファイルの変更時間を一度だけ修正する必要があります。

$ touch *

ntpntpdateの違いの詳細については、以下を参照してください。

18

シンプルなソリューション:

# touch filename

すべてOKです。

詳細: http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html

11
Brijesh Valera

ここでの他の答えは問題を説明するのに良い仕事をしているので、ここではそれを繰り返しません。しかし、まだリストされていない、それを解決できる解決策が1つあります。単にmake cleanを実行してから、makeを再実行するだけです。

Makeがすでにコンパイルされたファイルを削除すると、makeはタイムスタンプを比較するファイルを作成できなくなり、警告が解決されます。

6
skrrgwasme

LinuxQuestions.orgのユーザーm9dhatter によると:

「make」は、ファイルのタイムスタンプを使用して、コンパイルしようとしているファイルが古いか新しいかを判断します。時計がギザギザの場合、コンパイルに問題がある可能性があります。

数分前のクロックで別のマシンでファイルを変更し、それらをマシンに転送してからコンパイルしようとすると、ファイルが将来変更されたという警告が表示される場合があります。クロックが歪んでいるか、その影響を与える可能性があります(実際には思い出せません)。問題のあるファイルに移動してこれを行うことができます:

#touch <問題のファイルのファイル名>

6
z -

私は過去にこれを持っていました-マシン上でクロックが出ているためです。すべてのマシンが同じ時間になるようにNTPをセットアップすることを検討してください。

3
Ed Heal

これは通常、ホストマシンとクライアントマシンの時間の不一致が原因です。 ntp を使用して、マシンの時刻の同期を試みることができます。

2
Soo Wei Tan

解決策はNTPクライアントを実行することです。以下のようにコマンドを実行するだけです

#ntpdate 172.16.12.100

172.16.12.100はntpサーバーです

1
Surjit

コンピューターの時計のバッテリーを交換します。マザーボードのコイン型バッテリーの交換が必要なときにこのエラーメッセージを見ました。

1
BlushONine