• 图解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

  • 相关阅读:
    jenkins
    k8s 驱逐限制
    jenkins+k8s 实现持续集成
    镜像更新备份
    【工具分享】2020年4月 phpstorm2020.1 for mac
    【排坑】mac安装homebrew会遇到的各种问题解决方案
    记一次C盘扩容
    2018夏季工作台之再设计
    left join后面加上where条件浅析
    编程随想篇(2018夏)
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3293887.html
Copyright © 2020-2023  润新知