Linux カーネルのソース コードは数多くあり、構成オプションは数千あります。そして構成は非常に大規模で複雑です。
必要な機能構成をより適切に選択できるように、Linux カーネル ソース コードは構成システムを構成します。
構成システムは 3 つの部分で構成されます:
Makefile
: 全体的な構成のコンパイルを担当しますKconfig
: 構成オプションのソースこの設定システムは、make menuconfig
:
Kconfig ファイルです;
メイン オプションの構成ソース ファイルは次のとおりです: arch/$(ARCH)/Kconfigファイル###;###<p data-tool="mdnice编辑器" style="padding-top: 8px;padding-bottom: 8px;line-height: 26px;">main<code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);'>Kconfig
ファイルは他のディレクトリの Kconfig
ファイルを呼び出し、他のディレクトリの Kconfig
ファイルは次の Kconfig
を呼び出します。すべてのレベルのサブディレクトリ。ツリー状の構成オプションを形成するファイル。
例: drivers/net/ usb/Kconfig、DM9601 メニュー:
config USB_NET_DM9601
は メニュー項目 で、メニュー項目の下には があります。メニューの属性;
メニューはすべて config
で始まり、途中にスペースがあり、メニュー項目は大文字で表記されます。
#tristate
: プロンプト情報を示します。 設定メニューに表示される文字列 # によって異なります
: 依存オプションを示します (このオプションは依存オプションが選択されている場合のみ選択できます) select
: このメニューが選択された後、自動的に選択されたメニュー ヘルプ
: ヘルプ テキスト; Kconfig 構文の詳細なリファレンス: Documentation/kbuild /kconfig-langages.txt
カーネル設定が完了すると、 ## に配置されます。 #kernel ソース コード トップ ディレクトリに .config ファイル
を生成します;
.config ファイルを開くと、次の内容が表示されます:
「Davicom DM96xx based USB 10/100 Ethernet device」 オプションが構成で選択されており、「
CONFIG_USB_NET_DM9601=」が生成されます。 .config
ファイル。y" 構成情報。選択されていない場合は、"#" でコメントアウトされます。
は Kconfig
と同じで、最上位に # があります##Makefileファイル。その機能は次のとおりです:
は、Linuxカーネル全体の構成とコンパイルを担当します。 #トップレベル
Makefile ファイルの構成オプションに従ってカーネルをコンパイルします。
トップレベル
makfile
Mekefile## があります# 各サブディレクトリ内のファイル、これらの
Makefile の例
: obj-$(CONFIG_USB_NET_DM9601) = dm9601.o
以下と同等:
obj-y = dm9601.o
obj-y
は、dm9601.o
ターゲット ファイルをカーネル dm9601 にコンパイルすることを意味します。 .o
ターゲット ファイルは、dm9601.c
または dm9601.S
ファイル ( はターゲット ファイルをモジュールにコンパイルすることを意味します
defconfig ファイルがあります。設定をロードするときは、
make xxx_defconfig を実行するだけで、
.config ファイルが作成されます。これは、設定がロードされたことを意味します。
日々の開発プロセスでは、変更された .config
の場合、通常、.config
のコピーが元の xxx_defconfig
で上書きされ、コードがアップロードされます。 。
以上がLinuxドライバーエンジニアが知っておくべきカーネル構成の知識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。