• 图解linux内核编译框架


    内核是如何编译成的

    -知其然而不知其所以然
    (第一篇)

     

    转载:http://blog.chinaunix.net/uid-28236237-id-3840137.html

    Linux内核有分门别类的目录,每个目录包含了不同过能的模块代码。大家一般把这个结构叫做linux代 码树。树必然是一个非常恰当的比喻,枝分枝,密密麻麻,参差不穷。那编译内核的时候内核的编译系统是如何将这么多的文件编译链接起来最后形成一个可运行的 镜像文件的呢。这篇文章主要从较高的层面串联出这个过程,使得我们能在头脑里形成一个内核编译的过程。内核编译系统本来就是相当复杂的,这里我们只描述编 译过程,至于这个过程是如何通过Makefile来实现的,这里不做分析。这也是为什么叫做“知其然而不知其所以然”

    第一节 图解linux内核编译系统


    内核在编译生成可运行的内核镜像之前,必须生成一个vmlinux组建。实际上这个vmlinux已经包含了内核的绝大部分模块。是组成内核的最重要的部 分。通过下面的图,我们可以清晰的看到这个vmlinux组建是哪些模块连接组成的。至于图中built-in.o又是如何生成的,本篇就不再复述了。总 之内核首先会编译出图中红框框中的五大组建,最后链接生成vmlinux。而五大组建又可以拆分成很多小的组建,具体vmlinux由哪些组件链接而成可 分析下面的命令
    /usr/local/arm/3.4.1/bin/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/nwfpe/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  
    lib/lib.a  
    arch/arm/lib/lib.a  
    lib/built-in.o  
    arch/arm/lib/built-in.o  
    drivers/built-in.o  
    sound/built-in.o  
    net/built-in.o
    --end-group
    .tmp_kallsyms2.o

  • 相关阅读:
    Springboot学习:核心配置文件
    Springboot学习:底层依赖与自动配置的原理
    Springboot学习:介绍与HelloWorld
    js根据时间戳倒计时
    windows phone 豆瓣api的封装
    Android开发初始
    PHP(一)
    程序员修炼之道(一)
    WebClient和HttpReuqest两种网络请求的方式
    黑客与画家(二)
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3293887.html
Copyright © 2020-2023  润新知