博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢欣赏linux 生成内核镜像
阅读量:4069 次
发布时间:2019-05-25

本文共 3755 字,大约阅读时间需要 12 分钟。

慢慢欣赏linux 生成内核镜像all: bzImage	#arch/x86/Makefile	||	\/	bzImage: vmlinux		$(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)			||			\/	//vmlinux展开,进入根目录的Makefile			# vmlinux image - including updated kernel symbols			vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCE				$(call if_changed_rule,vmlinux__)						||						\/						define rule_vmlinux__							:							$(call cmd,vmlinux__)						endef							||							\/	//关键是vmlinux-lds链接脚本,决定内核镜像的布局							quiet_cmd_vmlinux__ ?= LD      $@							  cmd_vmlinux__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \							  -T $(vmlinux-lds) $(vmlinux-init)                          \							  --start-group $(vmlinux-main) --end-group                  \							  $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^)		||	//KBUILD_IMAGE在arch\x86\Makefile里面定义,的定义如下:KBUILD_IMAGE := $(boot)/bzImage; 		||	//boot也在arch\x86\Makefile定义,定义如下:boot := arch/x86/boot		||	//build在scripts/Makefile.build里面定义,定义如下:build := -f scripts/Makefile.build obj		\/	//展开		make build := -f scripts/Makefile.build obj=arch/x86/boot arch/x86/boot/bzImage		||		\/	//继续展开,进入arch/x86/boot/Makefile		$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE			$(call if_changed,image)											||											\/	//$(obj)/vmlinux.bin目标定义											$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE												$(call if_changed,objcopy)																||																\/	//$(obj)/compressed/vmlinux目标定义																$(obj)/compressed/vmlinux: FORCE																	$(MAKE) $(build)=$(obj)/compressed $@																					||																					\/																					$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/piggy.o FORCE																						$(call if_changed,ld)																						@:																																							||																																							\/																																							$(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE																																								$(call if_changed,mkpiggy)																																											||																																											\/	//suffix-y代表压缩模式,由CONFIG_KERNEL_XXX决定																																											$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE																																												$(call if_changed,gzip)																																																		suffix-$(CONFIG_KERNEL_GZIP)	:= gz																																											$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE																																												$(call if_changed,bzip2)																																											$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE																																												$(call if_changed,lzma)																																											$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE																																												$(call if_changed,lzo)																																											suffix-$(CONFIG_KERNEL_GZIP)	:= gz																																											suffix-$(CONFIG_KERNEL_BZIP2)	:= bz2																																											suffix-$(CONFIG_KERNEL_LZMA)	:= lzma																																											suffix-$(CONFIG_KERNEL_LZO) 	:= lzo																																										||																																										\/																																										cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false )																	||																	\/

linux内核vmlinux的编译过程(七)

https://blog.csdn.net/m0_47799526/article/details/106202622

linux内核学习(10)启动全过程概述之一

https://blog.csdn.net/cug_fish_2009/article/details/6516403

linux源码Makefile的详细分析

https://www.cnblogs.com/amanlikethis/p/3675486.html

linux2.6 makefile分析

https://www.xuebuyuan.com/3121989.html

你可能感兴趣的文章
Golang struct 指针引用用法(声明入门篇)
查看>>
Linux 粘滞位 suid sgid
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>
Winform多线程
查看>>
C# 托管与非托管
查看>>
Node.js中的事件驱动编程详解
查看>>
mongodb 命令
查看>>
MongoDB基本使用
查看>>
mongodb管理与安全认证
查看>>
nodejs内存控制
查看>>
nodejs Stream使用中的陷阱
查看>>
MongoDB 数据文件备份与恢复
查看>>
数据库索引介绍及使用
查看>>
MongoDB数据库插入、更新和删除操作详解
查看>>
MongoDB文档(Document)全局唯一ID的设计思路
查看>>
mongoDB简介
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>