内核编译过程

一、内核配置方法

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,404评论 19 139
  • 我们说的Linux其实指的就是 内核(kernel)而已。这个内核控制你主机的所有硬件并提供系统所有的功能,所以它...
    Zhang21阅读 12,158评论 0 18
  • 你若盛开,蝴蝶自来 今天看了一个故事"南唐北陆"就是南方有佳人唐瑛,北方有绝色陆小曼。他们是两道不同的风采...
    温雯兒雅阅读 3,308评论 6 1
  • 生活纷纷扰扰的,人们总是说讨生活,过日子。可太多太多的人,根本算不上生活二字,大多数人,不过仅仅是生存。​ 1、外...
    扛着大王去巡山阅读 2,578评论 1 1
  • 這還只是一。 然,你就已經缺乏耐性繼續寬容,那我又何必再將自己置於孤軍作戰的境地? 原來,我就應當時刻保持著隨時可...
    theBigVivi阅读 1,937评论 0 0