1

buildroot を使用して Linux カーネル モジュールを作成し、クロスコンパイルを実行しています。次のようなオプションのビットを作成するために、Config.inファイルを作成しました。

config BR2_PACKAGE_MYPACKAGE_OPTION1
    bool "Option 1"

私のソースコードでは、次のようになります。

#ifdef CONFIG_BR2_PACKAGE_MYPACKAGE_OPTION1
#error Testing if symbol defined 
#endif

これは機能しません。オプションが menuconfig からチェックされるコンパイル時にシンボルが定義されていません。シンボルは最上位の .config ファイルに表示されます。

mypackage.mk はシンボルにアクセスできると思いましたが、そうです。これらを .mk ファイルに追加しようとしましたが、TARGET_CFLAGS と EXTRA_CFLAGS の両方がステートメントによって変更されますが (@echo コマンドで確認)、コンパイラに渡されません。

ifeq ($(BR2_PACKAGE_MYPACKAGE_OPTION1),y)
    TARGET_CFLAGS += -DCONFIG_BR2_PACKAGE_MYPACKAGE_OPTION1
endif

ifeq ($(BR2_PACKAGE_MYPACKAGE_OPTION1),y)
    EXTRA_CFLAGS += -DCONFIG_BR2_PACKAGE_MYPACKAGE_OPTION1
endif

ソース コード内の構成シンボルにアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

0

私は1つの可能な答えを見つけました:

関心のあるものを mypackage.mk ファイルの $(MAKE) 呼び出しに渡すと、それらをパッケージの Makefile/Kbuild ファイルでコンパイラに渡すことができます。

于 2012-11-07T15:16:01.287 に答える