我正在使用 wifi 设备编译图像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=y
话,结果make 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 $@
通过检查 Makefile $(srctree)/arch/$(SRCARCH)/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
as
config DEBUG
bool
prompt "Compile packages with debugging info"
default n
help
Adds -g3 to the CFLAGS.
您也可以在该文件中定义变量。