首页 > 系统相关 >Linux内核Makefile系统文件详解

Linux内核Makefile系统文件详解

时间:2023-09-24 22:38:50浏览次数:40  
标签:包含 代码 Makefile 编译 内核 Linux 目录 系统文件

Makefile

Linux内核的Makefile系统非常复杂,因为内核包含了许多不同的配置选项、架构和模块。以下是Linux内核Makefile系统中一些重要的文件和目录,以及它的作用。

顶层Makefile(Makefile)

  • 顶层Makefile是整个内核编译过程的入口点

  • 它包含了全局选置选项,如目标体系结构、编译器选项等。

  • 该文件会包含并调用各个子目录中的Makefile。

Kconfig文件

  • Kconfig文件用于配置内核编译选项。

  • 用户可以使用'make menuconfig'等命令在文本界面中配置内核

  • Kconfig文件定义了可配置的选项,依赖关系和默认值。

arch目录

  • arch目录包含中不同的体系结构(如x86、ARM、MIPS)的Makefile。

  • 每个体系结构的Makefile负责编译该体系结构的内核部分。

init目录

  • init目录包含了内核启动代码的Makefile

  • 这些代码在内核启动过程中执行。

Kernel目录

  • kernel目录包含了内核的核心代码,如进程管理、内存管理、调度器等。

  • 该目录下的Makefile负责编译这些核心代码。

fs目录

  • fs目录包含了文件系统相关的代码,如VFS、ext4、NTFS等。

mm目录

  • mm目录包含了内存管理相关的代码,包括物理内存管理和虚拟内存管理。
  • 该目录下的Makefile负责编译这些代码

net目录

  • net目录包含了网络协议栈的代码,如TCP/IP,UDP等。
  • 每个协议都有自己的Makefile。

drivers目录

  • drivers目录包含了硬件设备驱动程序的代码,如网络适配器驱动器、显卡驱动等。
  • 每个设备驱动都有自己的Makefile。

scripts目录

  • scripts目录包含了用于构建内核的脚本。
  • 包括配置脚本、Makefile生成脚本等。

include目录

  • include目录包含了内核头文件,供内核源代码中的C文件包含。
  • 内核头文件定义了数据结构、函数原型等。

Module.sysmvers文件:

  • Module.symvers文件包含了内核模块的符号版本信息。
  • 用于保证内核模块与内核的符号兼容性。

Module目录:

  • Module目录包含了内核模块的Makefile和源代码。
  • 内核模块是可以动态加载到内核中的代码。
    这些文件和目录构成了Linux内核的Makefile系统,负责编译内核及其模块。内核的编译过程非常负责,涉及多个Makefile和配置文件的协同工作。

标签:包含,代码,Makefile,编译,内核,Linux,目录,系统文件
From: https://www.cnblogs.com/doubleconquer/p/17726823.html

相关文章

  • Linux Centos7 虚拟环境安装Mysql数据库(超详细图文讲解)
    1、进入Centos7虚拟机,使用wget下载Mysql相应的rpm包下载:wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm如果没有wget命令,可以使用yum安装,yuminstallwget2、执行rpm命令,安装rpmrpm-ivhmysql57-community-release-el7-8.noarch.rpm 3、安装Mys......
  • linux教程:删除当前目录非.zip文件及目录(find和rm两种方式)
    第一种方式要删除当前目录中除了.zip文件以外的所有文件和目录,可以使用以下命令:rm-fr!(*.zip)这个命令使用了通配符!(*.zip)来匹配除了.zip文件以外的所有文件和目录,并使用rm-fr来递归删除它们。请确保在执行此命令之前,你已经切换到了正确的目录。第二种方式使用find结合rm来删......
  • linux教程:route命令(显示并设置Linux中静态路由表)
    route显示并设置Linux中静态路由表补充说明route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中设置路由通常是为了解决以下问题:该L......
  • linux教程:centos7安装svn 1.10客户端(subversion指定版本安装)
    repotee/etc/yum.repos.d/wandisco-svn.repo<<-'EOF'[WandiscoSVN]name=WandiscoSVNRepobaseurl=http://opensource.wandisco.com/centos/7/svn-1.10/RPMS/$basearch/enabled=1gpgcheck=0EOF在线安装yumcleanallyuminstall-ysubversion离线安装从如下地址......
  • linux教程:cd $_与cd -有什么区别
    cd$_和cd-都是用于在命令行中切换工作目录的命令,但它们之间有一些区别。cd$_:$_是一个特殊变量,表示上一个执行命令的参数。在这种情况下,$_表示上一个命令的参数,即上一个cd命令所切换到的目录。因此,cd$_将切换到上一个命令所切换的目录。cd-:-(短横线)是一个特殊的目录名,表示前一个......
  • linux教程:/usr/bin/time -f “time: %E“命令解释
    /usr/bin/time-f"time:%E"是一个命令行命令,用于在Linux系统上以自定义格式显示命令的执行时间。该命令使用了GNUtime工具,而不是shell的内置time命令。解释一下各个部分的含义:/usr/bin/time:这是GNUtime工具的路径。在大多数Linux系统上,time工具的可执行文件位于/usr/bin/time......
  • linux 驱动向应用程序发射信号
    系统支持信号在linux终端输入kill-l可以查看系统所支持的信号,可以看出,每个信号的名字都是以SIG开头:root@zhengyang:/work/sambashare/linux-5.2.8#kill-l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8......
  • 尚观6410开发板移植linux 3.6.6问题记录及经验小结
    原文:https://www.cnblogs.com/iwantcomputer/p/8489831.html尚观6410开发板移植linux3.6.6问题记录及经验小结把开发板右上角的红色启动选项开关,两个都拨到下面(NAND),连接串口,已经内置了uboot1.16。根文件系统使用ext2的ramdisk,由于网卡无法驱动故无法使用nfs的根文件系统,网卡......
  • 高效的浏览 Linux 目录结构:pushd和popd命令
    在这个教程中,我们将讨论两个相关的命令:pushd和popd,使用它们可以高效的浏览Linux目录结构。这两个命令在大多数 shell ,比如bash、tcsh中都存在。pushd和popd命令在Linux系统中如何工作pushd和popd命令根据‘LIFO’(后进先出)原则工作。在这个原则之下,只有两个操作是允......
  • linux 第10章
    sh编程sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句,所有的sh基本都执行相同的任务,脚本在语法上略有不同,shebang允许允许主sh调用适当版本的sh来执行脚本。如果未指定shebang,默认执行sh,即下列程序的第一行。例:创建一个一个文本文件mysh,包含:!/bin/bash//sh第一......