web-dev-qa-db-ja.com

「make clean」と「make mrproper」の両方が使用されるのはなぜですか?

LinuxカーネルMakefileに記述されています

clean - Remove most generated files but keep the config and
        enough build support to build external modules
mrproper - Remove all generated files + config + various backup files

そして Arch docs に記載されています

準備を完了するには、カーネルツリーが完全にクリーンであることを確認します。

$ make clean && make mrproper

したがって、make mrproperはより完全な削除を行いますが、なぜmake clean 中古?

10
sitilge

LinuxカーネルMakefile のコメントに記載されているように、クリーニングは3つのレベルで行われます。

###
# Cleaning is done on three levels.
# make clean     Delete most generated files
#                Leave enough to build external modules
# make mrproper  Delete the current configuration, and all generated files
# make distclean Remove editor backup files, patch leftover files and the like

Makefileによれば、mrproperターゲットはcleanターゲットに依存します( 行1421 を参照)。さらに、distcleanターゲットはmrproperに依存します。

したがって、make mrproperを実行すると、cleanターゲットが実行するのと同じこと(およびその他)も削除されるので十分です。

mrproperターゲットは1993(Linux 0.97.7)で追加され、常にcleanターゲットに依存してきました。これは、make clean && make mrproperのようにbothターゲットを使用する必要がなかったことを意味します。

歴史的参照: https://archive.org/details/git-history-of-linux

17
Kusalananda

cleanMakefilemrproperターゲットの前提条件であるため、make clean個別に冗長です。

0
sebasth

make mrproperを実行することをお勧めしますが、必要ではありません。なぜですか?

古い設定ファイルが存在する場合、makeコマンドは「はクリーンではありません。'makemrproper ' "を実行してください」という警告を表示するため、このエラーはカーネルのコンパイルに失敗し、再度コンパイルした場合に再現されます。

から: Raspberry Piをマスターする

make mrproper

理論的には、この手順は必要ありません。しかし、カーネル開発者は、何かが誤って場違いのままにされた場合に備えて、とにかくそれをしてほしいと思っています。この手順では.configファイルも削除されることに注意してください。したがって、保持する必要がある場合は、コピーを作成してください。

0
GAD3R