内核源码里有
#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 ordirectory这个错误。所用是用这个头文件控制编译的。
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来查看各个命令的详细操作。



///////////////////////////////////////////////////////////////////////








///////////////////////////////////////////////////////////////////////

这是Linux内核的一个BUG。内核版本是2.6.27.8

具体表现为,如果在driver目录下创建了一个新目录,然后在该目录下编写好Kconfig,并在drivers/Kconfig文件中添加了source选项。按道理,内核配置中就应该添加上了这个目录。makemenuconfig后就能够找得到。但实际情况确实找不到。更为疯狂的是,即便是把drivers/Kconfig文件胡乱改掉、甚至是删除掉,都不会对内核的配置过程造成任何影响。
内核(基于ARM架构,下文同)中所有的配置文件,都是由arch/arm/Kconfig包含进去的(其他平台类推,比如x86就是arch/x86/Kconfig)。

////////////////////////////////////////////////////////////////////////
内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP
///////////////////////////////////////////////////////////////////////////

内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP
///////////////////////////////////////////////////////////////
内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP
//////////////////////////////////////////////////////////////////////////////////////
内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP
////////////////////////////////////////////////////////
内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP
//////////////////////////////////////////////////////////////
内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP
//////////////////////////////////////////////////////////////
内核linux2.6.28 makefile说明文档 驱动编译和内核配置相关-LMLPHP


///////////////////////////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////////
 
















12-10 01:19