一、内核配置方法
1、配置哪些目录需要编译
2、配置哪些文件需要编译
确认编译时,到底文件是在哪个目录。
如:<mach/hardware.h>
解决办法:
Makefile make
OBJS += xx.o
学习内核的地图:目录、Makefile
主目录下的Makefile是核心。非常复杂
各个子目录下的Makefile。非常简单
内核有3个桶:
obj-y:编译进内核 make Image
make zImage make uImage
obj- :不编译进内核
obj-m:以模块形式编译 make modules
主目录下的Makefile中,通过:
来定义目标和依赖。
在主目录下的Makefile中,通过include关键字,可以包含其他子目录下的Makefile。
如何配置内核?
1、ARCH ?= $(SUBARCH)
SUBARCH默认就是X86的,内核默认配置按照X86
ARCH这个变量改为arm单词
1.1 交叉编译
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
2、哪些文件编译?哪些文件不编译?
CONFIG_xxxx
配置单:芯片厂商为内核提供的参考配置单。
cd arm/configs
export到内核的.config下
修改defconfig,变成适应于板子的。
总结:
配置步骤:
1、配置仓库选取
2、交叉编译器的修改
3、体系结构体的选择
4、增删改查:make menuconfig对.config进行修改,变成图形界面。
二、linux内核编译
1、vmlinux
2、Image
3、zImage
uboot需要修改代码。
4、uImage
专门为uboot提供的内核启动的加载镜像。
先生成Image,再生成zImage,然后再生成uImage。
网友评论