コンパイルを続けるにはどうすればよいですか?

コンパイルを続けるにはどうすればよいですか?

makeソースツリー全体を再コンパイルしなくても、いつでもプロセスを中断できることがわかります。私が知っている限り、makeターゲットはまだコンパイルされていない場合、または最後のコンパイル以降にソースコードが変更された場合にのみコンパイルされます。
しかし、私が中断すると、make明らかに1つ以上の(並行性レベルに応じて)準備が整ったバイナリが1つ以上あります。次に私が走ったら、彼らは何をしますかmake?または、部分的にコンパイルされたバイナリを避けるためにCtrl+を押すと、現在のターゲットは完了しますか?C

ベストアンサー1

make簡単に言うと、各ステップが複数のファイルを入力として使用し、単一のファイルを出力として生成する(潜在的に大きな)数のステップがあると考えることができます。

ステップは、「コンパイルターゲットfile.cfile.oまたは「ldリンクの使用main.o」のいずれかです。中断すると、現在実行中のステップが終了し、処理中の出力ファイルが削除されます。通常、「半分準備されたバイナリ」は残りません。file.oprogrammakeCtrlC

再起動すると、makeすべての入力ファイルと出力ファイルのタイムスタンプを確認して、次の手順を再実行します。

  • 入力ファイルのタイムスタンプが出力ファイルよりも最新です。
  • 出力ファイルが存在しません

これは、通常、ステップの実行に長い時間がかかる場合(最新のコンピューターではまれですが、大規模なプログラムのステップは設計にld簡単に数分かかる場合があります)、停止して再開するとそのステップが最初から始まることを意味します。makemake

平均化の現実は、上記のMakefileものよりはるかに複雑ですが、基本原則は同じです。

おすすめ記事