make defconfigはOpenWrtからどこから設定を取得しますか?

make defconfigはOpenWrtからどこから設定を取得しますか?

Wi-Fiデバイスを使用して画像をコンパイルしています。OpenWrt。指示に従って簡単な.configファイルをTOP-DIRにコピーしました。

CONFIG_TARGET_ar71xx=y
CONFIG_TARGET_ar71xx_generic=y
CONFIG_TARGET_ar71xx_generic_XXX_OpenWrt_Router=y

その後、コマンドを実行してくださいmake menuconfig。このコマンドの結果は次のとおりです。

.config file now having default configuration. 

しかし、すべての新しい設定がどこから来たのかわかりません。私が変わったら、結果はCONFIG_TARGET_ar71xx_generic_XXX_Router=y非常に変わったでしょう。CONFIG_TARGET_ar71xx_generic_YYY_Router=ymake defconfig

答え1

OpenWrt は設定をディレクトリに保存します。

target/linux/<target system>/<subtarget>/profiles

次のコマンドを使用して、ターゲットシステムとサブターゲットを設定できますmake menuconfigメニューの設定

私:

対象システム=ar71xx

サブ目標 =generic

したがって、ディレクトリは次のようになります。

target/linux/ar71xx/generic/profiles

このディレクトリには、ファイルに保存されているいくつかの事前定義された設定ファイルがあります<profile>.mk。このファイルは、ターゲットプロファイルを選択するときにデフォルトで使用されるパッケージを定義します。

答え2

構成ファイルは通常このディレクトリに保存されます。

arch/$(ARCH)/configs

したがって、基本x86構成は次のようになります。

arch/x86/configs/i386_defconfig

基本的なx86_64構成は次のとおりです。

arch/x86/configs/x86_64_defconfig

すべてのパスはLinux srcのルートディレクトリに基づいています。


すべてのアーチの基本構成を見つけるには、最上位レベルを例にとりますMakefile

include $(srctree)/arch/$(SRCARCH)/Makefile
export KBUILD_DEFCONFIG KBUILD_KCONFIG

config: scripts_basic outputmakefile FORCE
  $(Q)mkdir -p include/linux include/config
  $(Q)$(MAKE) $(build)=scripts/kconfig $@

$(srctree)/arch/$(SRCARCH)/Makefileたとえば、Makefileを調べると、arch/x86/Makefile次のようになります。

ifeq ($(ARCH),x86)
  ifeq ($(shell uname -m),x86_64)
        KBUILD_DEFCONFIG := x86_64_defconfig
  else
        KBUILD_DEFCONFIG := i386_defconfig
  endif
else
        KBUILD_DEFCONFIG := $(ARCH)_defconfig
endif

変数の最終結果には、KBUILD_DEFCONFIGアーキテクチャのデフォルト構成ファイル名が含まれます。

答え3

すべてのCONFIG_変数はから来ます。ここでファイル内のすべての変数をopenwrt/config見ることができます。openwrt/.configたとえば、次のCONFIG_DEBUG場所にあります。openwrt/config/Config-build.in

config DEBUG
    bool
    prompt "Compile packages with debugging info"
    default n
    help
      Adds -g3 to the CFLAGS.

このファイルで変数を定義することもできます。

関連情報