"some_name.o.cmd"ファイルとは何ですか?

some_name.o.cmdLinuxカーネルコードにはどのファイルが表示されますか?自動的に生成されますか?

ベストアンサー1

~からLinux 2.5のカーネルの構成と構築(私が引用した部分は、2.5/2.6カーネルに適用された変更を表します):

変更されたコマンドラインパラメータを識別して、組み込みオブジェクトとモジュールを一度にコンパイルします。[...]

カーネルビルドの主なパフォーマンス問題はmake callです(もちろん、ほとんどの時間は通常コンパイル/リンクにかかりますが、このコストは使用されているビルドシステムとは無関係です)。 makeは、ローカルのMakeファイル、一般的な規則、およびすべての依存関係を読み、何をすべきかを把握する必要があります。したがって、ビルドシステムのパフォーマンスを最適化する確実な方法は、不要な呼び出しを避けることです。[...]

GNU makeでコマンドライン変更を処理するためのより柔軟なソリューションを作成しました。実際の使い方はとても簡単です。ルールのコマンド部分に直接コマンドを作成するのではなく、それを変数に割り当てると、cmd_link_l_targetビルドシステムは必要に応じてコマンドを実行し、コマンドライン自体に対する変更を追跡します。実装タスクは次のとおりです。コマンドを実行すると、マクロはif_changedコマンドラインをファイルに書き込みます.<target>.cmd。再構築中にmakeが再度呼び出されると、これらのファイルが含まれます.*.cmd再構築するかどうかを決定するときは、前提条件を見つけて、ルールのL_TARGETコマンドFORCE部分を常に再実行するよう強制します。

デフォルトでは、これはカーネルコンパイルの最適化です。このファイルは、make不必要に多くの操作が行われるのを防ぐために使用されます。上記のようにsome_name.o.cmdコンパイルするときsome_name.o

詳細については、以前にリンクした文書のセクション4.5(Linux-2.5/2.6でkbuildの新機能は何ですか?)。

おすすめ記事