「make clean」と「make distclean」の違い


25

このページの助けを借りて、ソースからffmpegをインストールしました。 https://trac.ffmpeg.org/wiki/CentosCompilationGuide

このチュートリアルのほとんどがを呼び出していることに気付きましmake distcleanmake install。ただしmake clean、インストール後にlibvpxのみが呼び出されます。

このドキュメントによると、 http: //www.gnu.org/software/automake/manual/automake.html#Clean make cleanmake作成されたすべてのファイルを削除し、作成されたすべてのファイルを削除します。make distclean./configure

きれいにする

make allによってビルドされたファイルをビルドツリーから消去します。

distcleanを作る

さらに、作成された./configureをすべて消去します。

それmake distcleanが次のインストールに必要とされることは理解していますが、make cleanインストール後になぜ呼び出されるのか理解できませんでした。

インストールされたffmpegは問題なく動作します。だから私はこの質問をしたのは、Linuxについての知識を向上させたいだけだからです。誰かがそれについて説明してくれるととても助かります。


2
Make cleanは、インストール後にクリーンアップのために呼び出されます。まだソース(したがって、これらを再作成できる)とインストールされたプログラムの両方がある場合、コンパイルしたディレクトリにコンパイルしたバージョンを保持する必要はありません。
ヘネス

回答:


27

後に使用されるパラメーターmakeは、を作成した開発者に依存していMakefileます。後で参照するドキュメントであるAutotoolsは、を作成する多くの方法の1つにすぎませんMakefile

典型的な標準はmake clean、すべての中間ファイルmake distcleanを削除し、configureスクリプト出力を削除するなど、tarが展開されていない状態(またはかなり近い状態)のツリーをそのままにします。これは、たとえばLinuxカーネルの動作方法です。

言い換えれば、これらのライブラリのそれぞれについて、開発者に完全に依存だし、時にはその理由ですcleanと、他の時間、それはですdistclean。ちなみに、実行する必要はありませんclean/ distclean-ディスク容量を節約するためだけに実行してもらうと思います。make install通常、ファイルを宛先ディレクトリにコピーします(これも開発者に依存します)-通常、/usr/libまたは/usr/bin(Autotoolsビルドシステムの場合はconfigureスクリプトによっても決定されます)のような場所

これらのニュアンスが、RPMやDebianパッケージなどのパッケージ管理システムを使用する主な理由です。


人々がバイナリパッケージを使用する主な理由は?時間を節約するにはどうでしょうか?
x-yuri

6

私の理解では、それは単に安全なディスク容量です。いくつかのプログラムをコンパイルすると、バイナリでリンクされているため、不要になったオブジェクトファイルなど、多くのファイルが作成されます。再びCPU時間を費やすことで、すべてを再作成できます。

現在のffmpegコードでこの例を見てください:

  • gitリポジトリのクローン作成後、ソースは53 160 kBを消費します
  • configureの実行後は53 632 kBです
  • コンパイル後、初期値の10倍以上の値があります:673 668 kB
  • make clean これを53 636 kBに減らします
  • そして最後にmake distclean、クローン作成直後のレベルに近づいた後:53 188 kB

2

libvpxステップがmake clean代わりに使用する理由make distclean

ガイドlibvpxを書いている時点で、その中で何のルールがなかったMakefileターゲットのためにdistcleanそう、clean代わりに使用されました。

なぜmake (dist)clean含まれているmake install

make distclean/ make cleanmake install、後戻り、構成オプションの変更、および再コンパイル(予想よりも頻繁に発生する)を行うユーザーに「クリーンスレート」を提供するための予防措置として、それぞれの後に単に含まれています。

コンパイルガイドの以前のバージョンでは、preventativeなしで、make distcleanこれらのユーザーの1人が予期しない結果に遭遇することがありました。

make distclean/ make cleanでエラーが発生した場合はどうなりますか?

このような:

Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'.  Stop.

またはこれ:

make: *** No rule to make target 'distclean'.  Stop.

それを無視します。これは、make distclean2回実行した可能性が高いことを意味するだけで、無害です。


ガイドが現在make distcleanlibvpxに使用していることに注意してください。
ハシム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.