3

コードで使用できるコンパイル時のマクロ/定義を Kconfig ファイルに追加するオプションがあることを理解しています。

(たとえば、#define などの定数の定義)。

4

1 に答える 1

5

Kconfig の値は、Makefile が定義するとおりに渡されます。また、選択されたすべての Kconfig 値がヘッダー ファイルに入れられ、アセンブラーと 'C' コードに渡されます。したがって、これを Kconfig ファイルで直接行うのではなく、Makefile またはソースで行うことができます。

Kconfig

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 ドキュメントを参照しています。

于 2014-08-23T16:02:03.823 に答える