私は大学の小さなLinuxクラスターにPuTTYとWinSCPを介して接続し、後者を使用してファイルを転送し、前者でそれらをコンパイルして実行します。私のこれまでの仕事は大学の研究室で行われてきましたが、今日は自宅で面白い警告を発する仕事をしています。
フォルダー全体をアップロードし、make
コマンドを実行すると、これが出力の最終行になります。
make:警告:クロックスキューが検出されました。ビルドが不完全な可能性があります。
結果のバイナリは正常に機能し、ビルドプロセスで他の予期しないエラーは発生していないようです。
私はいくつかの新しい/置換ファイルをアップロードした後にビルドすることでエラーを引き起こすことができるようです(私はすべてをローカルで編集してから新しいバージョンをアップロードします)ので、ミスマッチなファイル変更時間と同じくらい簡単なものかどうか疑問に思っていますか?または何かもっと心配ですか?
だから、私は心配する必要がありますか?これを修正/防止するにはどうすればよいですか?
通常、このメッセージは、一部のファイルの変更時間が現在のシステム時刻より遅いことを示しています。 make
は、ソースファイルがオブジェクトファイルよりも最近変更されたかどうかをチェックすることにより、インクリメンタルビルドを実行するときにコンパイルするファイルを決定するため、この状況により、不要なファイルがビルドされるか、さらに悪いことに、構築されない.
ただし、ゼロからビルドする場合(インクリメンタルビルドを実行しない場合)、この警告を無視して無視することができます。
通常、これは、NFSマウントされたディレクトリに構築するときに発生し、クライアントとNFSサーバーのクロックが同期していません。
解決策は、NFSサーバーとすべてのクライアントの両方でNTPクライアントを実行することです。
これは、サーバー上のSamba SMB CIFS共有でmake
を実行しているときにも起こりました。永続的なソリューションは、サーバーとクライアントの両方にntp
デーモンをインストールすることです。 (この変数はntpdate
を実行しても解決されないことに注意してください。これは一時的に時差を解決しますが、将来的には解決しません。)
UbuntuおよびDebianから派生したシステムの場合、コマンドラインで次の行を入力するだけです。
$ Sudo apt-get install ntp
さらに、影響を受けるディレクトリでコマンドtouch *
を1回(および1回のみ)発行して、ファイルの変更時間を一度だけ修正する必要があります。
$ touch *
ntp
とntpdate
の違いの詳細については、以下を参照してください。
シンプルなソリューション:
# touch filename
すべてOKです。
詳細: http://embeddedbuzz.blogspot.in/2012/03/make-warning-clock-skew-detected-your.html
ここでの他の答えは問題を説明するのに良い仕事をしているので、ここではそれを繰り返しません。しかし、まだリストされていない、それを解決できる解決策が1つあります。単にmake clean
を実行してから、make
を再実行するだけです。
Makeがすでにコンパイルされたファイルを削除すると、makeはタイムスタンプを比較するファイルを作成できなくなり、警告が解決されます。
LinuxQuestions.orgのユーザーm9dhatter によると:
「make」は、ファイルのタイムスタンプを使用して、コンパイルしようとしているファイルが古いか新しいかを判断します。時計がギザギザの場合、コンパイルに問題がある可能性があります。
数分前のクロックで別のマシンでファイルを変更し、それらをマシンに転送してからコンパイルしようとすると、ファイルが将来変更されたという警告が表示される場合があります。クロックが歪んでいるか、その影響を与える可能性があります(実際には思い出せません)。問題のあるファイルに移動してこれを行うことができます:
#touch <問題のファイルのファイル名>
私は過去にこれを持っていました-マシン上でクロックが出ているためです。すべてのマシンが同じ時間になるようにNTPをセットアップすることを検討してください。
これは通常、ホストマシンとクライアントマシンの時間の不一致が原因です。 ntp を使用して、マシンの時刻の同期を試みることができます。
解決策はNTPクライアントを実行することです。以下のようにコマンドを実行するだけです
#ntpdate 172.16.12.100
172.16.12.100はntpサーバーです
コンピューターの時計のバッテリーを交換します。マザーボードのコイン型バッテリーの交換が必要なときにこのエラーメッセージを見ました。