Linux移植之子目录下的built-in.o生成过程分析

本文详细分析了Linux内核移植过程中,子目录下的built-in.o文件是如何生成的。通过在Linux目录下创建test文件夹并编写Makefile及C源文件,观察到make uImage后生成了test/built-in.o文件。从顶层Makefile开始,逐步解析built-in.o的生成过程,涉及到vmlinux-dirs、scripts/Makefile.build和Kbuild.include等关键文件。通过递归规则解释了如何处理子目录下的子目录,展示了Linux内核编译系统的深层工作原理。
摘要由CSDN通过智能技术生成

Linux移植之make uImage编译过程分析中罗列出了最后链接生成vmlinux的过程。可以看到在每个子目录下都有一个built-in.o文件。对于此产生了疑问built-in.o文件是根据什么产生的。

arm-linux-ld -EL  -p --no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.lds
arch/arm/kernel/head.o arch/arm/kernel/init_task.o  init/built-in.o --start-group  usr/built-in.o  arch/arm/kernel/built-in.o  
arch/arm/mm/built-in.o  arch/arm/common/built-in.o  arch/arm/mach-s3c2410/built-in.o  arch/arm/mach-s3c2400/built-in.o  
arch/arm/mach-s3c2412/built-in.o  arch/arm/mach-s3c2440/built-in.o  arch/arm/mach-s3c2442/built-in.o  arch/arm/mach-s3c2443/built-in.o  
arch/arm/nwfpe/built-in.o  arch/arm/plat-s3c24xx/built-in.o  kernel/built-in.o  mm/built-in.o  fs/built-in.o  ipc/built-in.o  
security/built-in.o  crypto/built-in.o  block/built-in.o  arch/arm/lib/lib.a  lib/lib.a  arch/arm/lib/built-in.o  lib/built-in.o  
drivers/built-in.o  sound/built-in.o  net/built-in.o --end-group .tmp_kallsyms2.o

1、测试,在linux目录下添加一个test文件夹,在文件夹里面添加了test.c 和 Makefile。测试是否也会生成built-in.o文件

2、从顶层Makefile文件开始分析built-in.o原理

3、递归规则

 

1、测试,在linux目录下添加一个test文件夹,在文件夹里面添加了test.c 和 Makefile。测试是否也会生成built-in.o文件

a、mkdir test,创建test文件夹

b、cd test,进入test文件夹

d、vim Makefile,在里面创建Makefile

#
#Makefile for the linux kernel makefile experiment.
#
obj-y := test.o

e、vim test.c,在里面创建C文件

#include <linux/export.h>

int test_global = 0;

f、修改顶层Makefile,在core-y后面增加test/目录

-core-y         += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
+core-y         += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ test/

g、make uImage后观察到在链接的过程中多出了test/built-in.o 文件。测试成功

arm-linux-ld -EL  -p --no-undefined -X -o .tmp_vmlinux1 -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o arch/arm/kernel/init_task.o  
init/built-in.o --start-group usr/built-in.
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值