内核启动流程分析之Makefile

转载 2015年11月19日 12:11:07
分析Makefile:第一个文件、链接脚本
 1、子目录下面的makefile:
  obj-y  += mem.o random.o tty_io.o n_tty.o tty_ioctl.o
  obj-m    += s3c24xx_leds.o
 2、make uImage,发现uImage位于:linux-2.6.22.6_jz2440\linux-2.6.22.6\arch\arm\makefile
    可以肯定上面的这个makefile会被包含在顶层的makefile里面,我们搜索顶层makefile发现里面有:include $(srctree)/arch/$(ARCH)/Makefile
    
    在上一节的分析中,我们看到.config文件生成了autoconf.h和auto.conf
    我们搜索一下顶层的makefile:-include include/config/auto.conf
    
    在linux-2.6.22.6_jz2440\linux-2.6.22.6\arch\arm\makefile下可以看到uImage有关的一行:zImage Image xipImage bootpImage uImage: vmlinux,所以uImage依赖于vmlinux
    在顶层makefile里面linux-2.6.22.6_jz2440\linux-2.6.22.6\makefile搜索vmlinux可以看到:all: vmlinux
    
  zImage Image xipImage bootpImage uImage: vmlinux
    
  vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE 
    
     vmlinux-init := $(head-y) $(init-y)
     head-y  := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
     
     init-y  := init/
     init-y  := $(patsubst %/, %/built-in.o, $(init-y))即=init/built-in.o
     
  vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
  core-y  := usr/
  core-y  += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
  core-y  := $(patsubst %/, %/built-in.o, $(core-y))
    =usr/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
    
  libs-y  := lib/
  llibs-y1 := $(patsubst %/, %/lib.a, $(libs-y))
  libs-y2  := $(patsubst %/, %/built-in.o, $(libs-y))
  libs-y  := $(libs-y1) $(libs-y2)
    =lib/lib.a lib/built-in.o
    
  drivers-y := drivers/ sound/
  drivers-y := $(patsubst %/, %/built-in.o, $(drivers-y))
    =drivers/built-in.o sound/built-in.o
    
  net-y  := net/
  net-y  := $(patsubst %/, %/built-in.o, $(net-y))
    =net/built-in.o
  
  vmlinux-all  := $(vmlinux-init) $(vmlinux-main)
  vmlinux-lds  := arch/$(ARCH)/kernel/vmlinux.lds 


 走捷径分析linux:
 book@book-desktop:/work/system/linux-2.6.22.6$ rm vmlinux
 book@book-desktop:/work/system/linux-2.6.22.6$ make uImage V=1
 
 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

内核编译makefile详解

内核模块的编译方法 内核源码树:指导是内核源代码tar包解压缩后形成的目录(包含其下级所有目录和文件)。   已编译内核源码树:指的是已经成功生成过内核的源码树(已经成功执行过make  Uima...
  • lee244868149
  • lee244868149
  • 2014年07月31日 11:36
  • 841

《Linux内核分析》(三)——跟踪分析Linux内核的启动过程

作者:徐恒 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验环境:c+Lin...
  • FIELDOFFIER
  • FIELDOFFIER
  • 2015年08月16日 21:29
  • 1811

Linux内核分析(三)内核启动过程分析——构造一个简单的Linux系统

本文介绍了Linux内核的启动过程,分析了系统的关键部分代码从而可以让大家从一个大体上谅解Linux的启动过程,本人也是Linux的菜鸟级别。网络上很多的分析不太好动希望同属于初学者,这篇文章对大家有...
  • finzale
  • finzale
  • 2015年03月20日 22:33
  • 1859

U-Boot启动流程(Linux内核)的分析(写得好)

前面一段时间一直在移植U-Boot,Linux内核和构建根文件系统,其中有些地方还不是很明白,现在回过头来,理解一下U-boot的启动流程,以及 u-Boot是如何加载引导内核启动的。这里的分析也都是...
  • hushup
  • hushup
  • 2014年04月02日 09:10
  • 2043

Linux 内核启动流程

转载自 http://wenku.baidu.com/link?url=KpOdULJu1CxP1swqRs_Szoyg5r_8rje4N08o4QtB5L9QlPjWesTYlrTPgkxPOriF...
  • zhqh100
  • zhqh100
  • 2015年06月18日 09:54
  • 1420

s3c2440 内核启动流程分析之配置和编译

一、编译流程1- 解压缩2- 打补丁 patch -p_ < 补丁文件 -p用于忽略补丁文件前面几个‘/’ -p1表示去掉前面1个目录3- 配置两种方法:1. make menuconfig ...
  • feather_wch
  • feather_wch
  • 2016年03月21日 20:54
  • 632

分析Linux内核启动过程:从start_kernel到init

郑德伦 原创作品转载请注明出处《Linux内核分析》MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 STEP1:在自己的linux...
  • a363344923
  • a363344923
  • 2015年03月17日 20:05
  • 7070

IMX6Solo启动流程-Linux 内核启动 一

uImage生成流程
  • baicaiaichibaicai
  • baicaiaichibaicai
  • 2015年09月17日 09:35
  • 1799

ARM Linux启动流程分析——start_kernel前启动阶段(汇编部分)

本文整理了ARM Linxu启动流程的第二阶段——start_kernel前启动阶段(汇编部分),内核版本为3.12.35。我以手上的树莓派b(ARM11)为平台示例来分析Linux内核在自解压后到跳...
  • luckyapple1028
  • luckyapple1028
  • 2015年04月26日 13:08
  • 2855

内核启动makefile分析

1.子目录下的makefile a.c和b.c要编译进内核: obj-y+=a.o b.o a.c和b.c要联合组成一个模块: obj-m+=ab.o(ab.o是一个名字) ab-objs:...
  • laoniu_c
  • laoniu_c
  • 2014年01月06日 16:03
  • 761
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内核启动流程分析之Makefile
举报原因:
原因补充:

(最多只允许输入30个字)