コードで使用できるコンパイル時のマクロ/定義を Kconfig ファイルに追加するオプションがあることを理解しています。
(たとえば、#define などの定数の定義)。
コードで使用できるコンパイル時のマクロ/定義を Kconfig ファイルに追加するオプションがあることを理解しています。
(たとえば、#define などの定数の定義)。
Kconfig の値は、Makefile が定義するとおりに渡されます。また、選択されたすべての Kconfig 値がヘッダー ファイルに入れられ、アセンブラーと 'C' コードに渡されます。したがって、これを Kconfig ファイルで直接行うのではなく、Makefile またはソースで行うことができます。
config MY_DEFINE
bool "Select to get some DEFINE"
default y
help
This is a config define that is sent to both make
and defined in a config.h header.
ifeq ($(CONFIG_MY_DEFINE),y)
KBUILD_CFLAGS += -DTHE_REAL_DEAL=1 # THE_REAL_DEAL now '1' in C files.
endif
#ifdef CONFIG_MY_DEFINE
#define THE_REAL_DEAL 1
#endif
そのため、Kconfigセクションはユーザー インターフェイス情報を定義します。これは、 menuconfig.config
などによって出力される makefile 構文です。これは、入力するとソースになります。つまり、 menuconfigまたは別のツールによって選択されたすべてのものは Makefile で利用可能です。Kconfig変数にはCONFIG_があります。make
MakefileまたはSourceセクションのいずれかを選択して、定義を取得できます。範囲を選択する場合は、値をCONFIG_MY_DEFINE
コンパイラに渡すことができます。つまり、ほぼすべてのカーネル ヘッダーをインクルードするとconfig.hがインクルードされ、'C' 値CONFIG_MY_DEFINE
はユーザーが範囲内で選択した値に設定されます。
詳細については、kbuild wikiを参照してください。主にカーネルの kbuild ドキュメントを参照しています。