当前位置:  技术问答>linux和unix

★★★菜鸟提问:装完Linux之后是否就可以查看其内核源代码,该怎样查看?如何编译代码?★★★

    来源: 互联网  发布时间:2015-07-23

    本文导语:  小弟用的是RedHat,刚接触Linux,请多多指教! | Linux内核的配置系统由三个部分组成,分别是:  Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则;   配...

小弟用的是RedHat,刚接触Linux,请多多指教!

|
Linux内核的配置系统由三个部分组成,分别是:

 Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则; 
 配置文件(config.in):给用户提供配置选择的功能; 
 配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。

这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。所以,在本文中,我们只对 Makefile 和配置文件进行讨论。另外,凡是涉及到与具体 CPU 体系结构相关的内容,我们都以 ARM 为例,这样不仅可以将讨论的问题明确化,而且对内容本身不产生影响。

2. Makefile

2.1 Makefile 概述

Makefile 的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成 Linux 内核二进制文件。

由于 Linux 内核源代码是按照树形结构组织的,所以 Makefile 也被分布在目录树中。Linux 内核中的 Makefile 以及与 Makefile 直接相关的文件有:


 Makefile:顶层 Makefile,是整个内核配置、编译的总体控制文件。 
 .config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果(如 make config)。 
 arch/*/Makefile:位于各种 CPU 体系目录下的 Makefile,如 arch/arm/Makefile,是针对特定平台的 Makefile。 
 各个子目录下的 Makefile:比如 drivers/Makefile,负责所在子目录下源代码的管理。 
 Rules.make:规则文件,被所有的 Makefile 使用。 

用户通过 make config 配置后,产生了 .config。顶层 Makefile 读入 .config 中的配置选择。顶层 Makefile 有两个主要的任务:产生 vmlinux 文件和内核模块(module)。为了达到此目的,顶层 Makefile 递归的进入到内核的各个子目录中,分别调用位于这些子目录中的 Makefile。至于到底进入哪些子目录,取决于内核的配置。在顶层 Makefile 中,有一句:include arch/$(ARCH)/Makefile,包含了特定 CPU 体系结构下的 Makefile,这个 Makefile 中包含了平台相关的信息。

位于各个子目录下的 Makefile 同样也根据 .config 给出的配置信息,构造出当前配置下需要的源文件列表,并在文件的最后有 include $(TOPDIR)/Rules.make。

Rules.make 文件起着非常重要的作用,它定义了所有 Makefile 共用的编译规则。比如,如果需要将本目录下所有的 c 程序编译成汇编代码,需要在 Makefile 中有以下的编译规则:
        %.s: %.c
        $(CC) $(CFLAGS) -S $

    
 
 

您可能感兴趣的文章:

  • 菜鸟问题: 在red hat 9下如何查看文件的源代码?
  • 嘿嘿,菜鸟问题:用虚拟硬盘装的Linux,怎么查看windows分区啊
  • 【菜鸟提问】我想查看一个文件夹下每一个子文件夹的大小用什么命令?谢谢~
  • 菜鸟刚学jsp,对于查看数据库的用法还有点不明白?!100分送给解决问题的大侠。最好能给代码!!
  • (菜鸟提问)刚在虚拟机上面装了一个linux,怎么查看它内核的源码呢?
  • 菜鸟问题(源代码)
  • 菜鸟问题:linux各个函数的实现源代码在哪?
  • 菜鸟问题:java中import导入的文件在哪里,可以看倒源代码吗?
  • 我是菜鸟妹妹,那位大虾有用JAVA 开发的圆饼图和直方图的源代码?我只有21分都给你,够有诚意的吧。我急用(RUBY)。
  • 菜鸟问题:安装带源代码的程序时make不成功?
  • 菜鸟提问100分,帮我看看一句源代码,就一句!:)~
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ----菜菜鸟第三问:-菜鸟菜问:JAVA如何求 根号、开次方? -----
  • 菜鸟问一个关于j2ee的菜鸟问题
  • 怎样从一个菜鸟级的java programer升级到一个菜鸟级的java developer
  • 一个连菜鸟都算不上的菜鸟
  • 菜鸟求问菜鸟问题 ,域名绑定
  • ===菜鸟系列===:写过毕业论文的前辈请进!!!菜鸟散分啦!!!!
  • gcc问题---菜鸟发问之一,老大们帮忙啊!!菜鸟分不多,只好给这点了,对不起!!
  • 菜鸟又来问菜鸟问题了
  • 菜鸟的Linux练习疑问……
  • 菜鸟刚学jsp,还不知道怎么和sql server2000的数据库相连,我已经把odbc配好了,谁能给我一段和数据库相连的并显示所有数据的代码!菜鸟
  • 菜鸟提问,我怎么装redhat7。1
  • 菜鸟写的俄罗斯方块,请多多批评!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • ※菜鸟送分之一※ Red Hat Linux 的最高版本是多少?
  • 菜鸟问题:在Java中如何接收从键盘输入的字符串?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 菜鸟提问:包是什么概念?
  • 菜鸟问题~~快点进来拿分
  • 菜鸟菜问题1


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3