linux内核学习(8)如何生成vmlinux?简单走走

本文详细介绍了Linux内核构建过程中vmlinux的生成流程。从Makefile的规则到vmlinux-init和vmlinux-main的构建,再到build-in.o的生成,以及最终的链接步骤。通过分析内核源码和Makefile的相互作用,揭示了kbuild框架如何有序地将源代码编译链接成vmlinux。
摘要由CSDN通过智能技术生成

我们应该了解,内核编译出vmlinux还不算数,最后这个ELF格式的文件会被压缩成bzImage。不过那无关紧要。这次我要说说vmlinux的产 生流程,当然只是简单走走,里面kbuild复杂语法,连Makefile自带的很多规则都是比较复杂的,恐怕要全部搞懂,得费很大劲,毕竟这对于我研究 的方向没有多大帮助。我们知道要产生可执行文件要经过这样几个步骤:xx.c->xx.o、xx.o->xx,即先编译在链接,最终xx就是 我们要的文件,那么内核源代码怎么有序的形成这样的模式呢,靠的就是kbuild这个了不起的框架模型。

当然第一步找到vmlinux目标。

vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCE
ifdef CONFIG_HEADERS_CHECK
    $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
endif
ifdef CONFIG_SAMPLES
    $(Q)$(MAKE) $(build)=samples
endif
ifdef CONFIG_BUILD_DOCSRC
    $(Q)$(MAKE) $(build)=Documentation
endif
    $(call vmlinux-modpost)
    $(call if_changed_rule,vmlinux__)
    $(Q)rm -f .old_version


这个目标依赖的还挺多的,不过这里我只关注2个:vmlinux-init、vmlinux-main。可以看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值