some_name.o.cmd
Linuxカーネルコードにはどのファイルが表示されますか?自動的に生成されますか?
ベストアンサー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の新機能は何ですか?)。