内核源码里有
#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
这个CONFIG_DM9000宏是通过
include/linux/autoconf.h这个.h文件里的宏来工作的。autoconf.h是自动生成的,通过.config里的配置生成的。还会通过.config自动生成include/config/auto.conf文件。auto.conf被主makefile包含,被各个子makefile使用。
///////////////////////////////////////////////////////////////////////////
make mx6ull_14x14_evk_nand_defconfig命令对于的配置文件是在uboot_imx6ull/configs/mx6ull_14x14_evk_nand_defconfig,包含的所用的头文件在configs/mx6ullevk.h。因为修改了这个头文件的名字,出现include/config.h:7:31:
fatal error: configs/mx6ullevk.h: No such file or
directory这个错误。所用是用这个头文件控制编译的。
vim include/config.h
/* Automatically generated - do not edit */
#define CONFIG_IMX_CONFIG board/freescale/mx6ullevk/imximage.cfg
#define CONFIG_SYS_BOOT_NAND 1
#define CONFIG_BOARDDIR board/freescale/mx6ullevk
#include
#include
#include
#include
#include
uboot的配置文件:include/configs/mx6ullevk.h修改这个配置文件来达到裁剪和设置uboot,类似于kernel的make menuconfig的效果
///////////////////////////////////////////////////////////////
Linux/mips 3.10.14 Kernel Configuration 是在include/generated/autoconf.h里。
auto.conf中
CONFIG_DM9000_URBETTER_CON201=y
linux-2.6.28_smdk6410/drivers/net/Makefile中
obj-$(CONFIG_DM9000) += dm9000.o
obj-$(CONFIG_DM9000_URBETTER_CON201) += dm9000_con201.o
由于CONFIG_DM9000在include/config/auto.conf没有定义出宏,obj-$(CONFIG_DM9000)
+= dm9000.o 里变量为空,不会被加入编译,CONFIG_DM9000_URBETTER_CON201=y,obj-y +=
dm9000_con201.o 故而dm9000_con201.c会被
编译进内核dm9000_con201.o,
如果CONFIG_DM9000_URBETTER_CON201=m ,obj-m += dm9000_con201.o 故而dm9000_con201.c会被编译成模块dm9000_con201.ko。
linux-2.6.28_smdk6410/Documentation/kbuild/makefiles.txt 内核makefile的开发者说明文档
linux-2.6.28_smdk6410/Documentation/kbuild/modules.txt 如何build modules 和 install 的说明
linux-2.6.28_smdk6410/Documentation/kbuild/kconfig-language.txt kconfig文件里的配置语言说明文档
#make -n ARCH=arm uImage 加-n来查看各个命令的详细操作。
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
这是内核的一个BUG。内核版本是2.6.27.8
具
体表现为,如果在driver目录下创建了一个新目录,然后在该目录下编写好Kconfig,并在drivers/Kconfig文件中添加了
source选项。按道理,内核配置中就应该添加上了这个目录。make
menuconfig后就能够找得到。但实际情况确实找不到。更为疯狂的是,即便是把drivers/Kconfig文件胡乱改掉、甚至是删除掉,都不会
对内核的配置过程造成任何影响。
内核(基于ARM架构,下文同)中所有的配置文件,都是由arch/arm/Kconfig包含进去的(其他平台类推,比如x86就是arch/x86/Kconfig)。
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
阅读(2919) | 评论(0) | 转发(0) |